過去数年間、多くのPythonさまざまなPythonバージョンのライブラリをインストールしました。すぐに動作するように、制御なしで盲目的にインストールしました。 numpy、scipy、matplotlibを呼び出す pynest をインストールしようとすると、問題が発生します。苦労した後、Pythonとライブラリ.
調査後、システムにPython 2.5/2.6/2.7/3.2が見つかりました。各コピーには次の場所にいくつかのコピーまたはその他のものがあります。(my OS ==Mac OS X 10.7.5 Lion)
/Library/Frameworks/
/opt/local/Library/Frameworks/
/opt/local/bin/
/Applications/
/usr/local/bin/
/usr/bin/
/System/Library/Frameworks/
私はこれらを持っていることに夢中です。 /System/Libarary/Frameworks
にあるものを除いて、これらすべてを削除しました(/System/Library/
からは削除しません)。クリーンな作業の後、which python
は/usr/bin/python
にリンクする/System/Library/Frameworks
を提供します。
今、私はPythonを再インストールするための明確な環境ですか?他のバージョンが存在しないことを再確認する方法は?それらを再インストールして、それらとそのライブラリがどこにでも存在せず、再び多くのコピーを保持することを保証するにはどうすればよいですか?
きれいなPython 2.7を適切な場所にインストールし、システムにそれがどこにあるかを正確に知らせ、他の場所にライブラリをインストールしないようにします。管理方法についてアドバイスしてください。専門的な方法で。
あなたの情報については、ここに私の現在の$PATH
があります、それは修正されるべきだと思います:
/opt/local/bin:/opt/local/sbin:/opt/nest/lib/python2.7/site-packages:/usr/local/lib/python2.7/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/Django/bin:/usr/X11/bin:/opt/local/bin:/opt/local/sbin:/usr/local/lib/python2.7/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin
さらに情報が必要な場合はお知らせください。ありがとうございました!
[〜#〜] update [〜#〜]:
私はなぜそれがそんなにクレイジーになるのかを改めて考え直しています。次の方法でインストールしたためだと思います。
easy_install
/macports
/homebrew
/fink
/pip
時々;.dmg
時々;.pkg
時々;そして、彼らは異なる場所で物を作りました。これらの方法の背後にあるメカニズムは何でしょうか?彼らはターゲットの場所をどのように選択しますか?彼らが物事を台無しにするのを防ぐ方法は?
OPのアップデートで述べられているように、Pythonをインストールする方法はいくつかあり、ファイルを異なる場所に配置します。たとえば、macports
は物事を/opt/local/
に入れ、homebrew
は物事を/usr/local/
に入れます。また、Mac OS Xにはいくつかのpythonバージョンがあります。したがって、pythonをさまざまな方法で何度もインストールすると、多くのpythonシステム上に独立して存在するバージョンを取得します。
正確にはわかりません。問題は、多くのバージョンのpythonがある場合、どのバージョンを使用し、どこでパッケージを見つけるかは、システムのパス順序PATH
とPYTHONPATH
によってそれぞれ決定されることだと思います。したがって、インストールする場所の制御を失う可能性がありますpythonモジュール。モジュールをインストールするためにSudo python setup.py install
を実行する場合は(pythonルートのPATH
)そしてimport
でモジュールをpython -c "import it"
してみてください(今回はPATH
でpython)を見つけます)これは私の推測ですが、検証していませんでしたが、私自身の場合、何かがおかしくなりました。
原則として、異なる方法とツールが異なる場所に個別に物事をインストールすることを認識しているので、それらを注意して使用することです。
virtualenv
をチェックアウトすることをお勧めします)PATH
のパスの順序に注意し、正しいかどうかを検討してください。すでに混乱していて、治すのが非常に難しいと思われたので、最後にOSの完全な再インストールでこの質問を解決し、開始しました上記のDOs-and-DONTsに従うこと。 python(numpy/scipy/matplotlib、この質問をするのに問題を示していた)を使用した科学環境のインストールでは、 このチュートリアル は非常にだから、問題は最終的に解決しました。
ここに、私を混乱させたものと、それを解決した方法があります。
$ which python
/usr/bin/python
$ which python3
/usr/local/bin/python3
$ ls /usr/local/bin/python
ls: /usr/local/bin/python: No such file or directory
したがって、python2.7のHomeBrewインストールはありませんが、python3のインストールはあります。/usr/bin/pythonの下のバージョンはシステムのデフォルトを使用しています。モジュールの検索パスに基づいて判断できます。
$ /usr/bin/python
Python 2.7.10 (default, Feb 7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
`enter code here`Type "help", "copyright", "credits" or "license" for
more information.
>>> import sys
>>> sys.path
['', '/Library/Python/2.7/...
'/ Library/Python'に注目してください。これはMac OSのpythonバージョンです。しかし、ユーザーがインストールしたバージョン(つまりHomeBrew)に厳密にとどまりたいです。
そこで、これを修正するために私がしたことは次のとおりです。
$ brew install python
...
Warning: python 2.7.13 is already installed, it's just not linked.
You can use `brew link python` to link this version.
$ brew link --overwrite python
$ which python
/usr/local/bin/python
$ python
Python 2.7.10 (default, Feb 7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/Cellar/python/2.7.13...
/ Library/..ではなく/ usr/localです。
これで、すべてのpipインストール済みモジュールが見つかりました!問題が解決しました!
更新:
Brewをバージョン1.5.4に更新した後、シンボリックリンクが削除されたようです。そして、これをパスに追加する必要があります。
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
「brew info python」の「警告」セクションを参照してください。
==> Caveats
This formula installs a python2 executable to /usr/local/bin.
If you wish to have this formula's python executable in your PATH then add
the following to ~/.bash_profile:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
Pip and setuptools have been installed. To update them
pip2 install --upgrade pip setuptools
You can install Python packages with
pip2 install <package>
They will install into the site-package directory
/usr/local/lib/python2.7/site-packages
See: https://docs.brew.sh/Homebrew-and-Python.html
pythonディストリビューションを特定のフォルダーにインストールするには、pythonのインストール中に--prefix
スキームを使用できます。 プレフィックススキーム を使用すると、たとえばPython 2.7をフォルダー/opt/py27
にインストールできます。ここで、新しくインストールされたPythonディストリビューションを使用するには、次の手順を実行する必要があります。cleanupyou[〜 #〜] path [〜#〜]およびLD_LIBRARY_PATH:
それでおしまい。
(Pythonの複数の環境を同時にインストールする必要がある場合は、 virtualenv )をご覧になることをお勧めします
別のpythonバージョンを管理する別の優れたソリューションを次に示します。
https://github.com/pyenv/pyenv
(私はすでにここに答えを提供しましたが、これを追加または代替の答えとして投稿することにしました)