在过去几年中,我已经安装了各种版本的Python许多Python库。 为了让他们准备立即开始工作,我盲目地安装它们没有控制。 目前,当我试图安装他们造成的问题pynest它调用numpy的,SciPy的和matplotlib。 挣扎后,我要清理并重新安装Python和图书馆。
经过调查,我发现Python的2.5 / 2.6 / 2.7 / 3.2我的系统上,和他们每个人都有一些副本或其他的东西:(我的操作系统== 的Mac OS X 10.7.5狮子 )
-
/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 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
请让我知道如果你需要更多的信息。 谢谢!
更新 :
我profoudly重新思考它为什么变得如此疯狂。 我相信这是因为我通过安装的东西:
-
easy_install
/ macports
/ homebrew
/ fink
/ pip
有时; -
.dmg
有时; -
.pkg
有时; - 将源代码编译有时;
他们在不同地点制作的东西。 我不知道什么是这些方式背后的机制? 如何他们选择目标位置? 如何防止它们弄乱的东西了?
为什么它搞的一团糟?
还有就是不同的方式夫妇安装Python,作为OP的更新说,他们在不同的位置查找文件。 例如, macports
把东西放到/opt/local/
,而homebrew
把东西放到/usr/local/
。 此外,Mac OS X上带来了一些Python版本与本身。 所以,如果你通过不同的方式安装python很多次,你会得到你的系统上独立存在的许多Python版本 。
不会造成什么问题?
我不知道到底。 我想这个问题是,如果你有蟒蛇的许多版本,然后使用哪一个和在哪里可以找到包将在您的系统路径顺序确定PATH
和PYTHONPATH
分别。 所以,你可能会失去在哪里安装Python模块控制。 想想看,如果你运行sudo python setup.py install
安装模块(它由根的发现蟒蛇PATH
),然后尝试import
由模块python -c "import it"
(你这个时候它发现蟒蛇PATH
)或许真的会出问题。 这是我的猜测,我没有验证它。 但在我自己的情况下,什么事情也出问题。
如何避免这种情况?
我觉得原则是, 要注意的是不同的方法和工具可以独立安装的东西到不同的位置,所以正念地使用它们 。
- 除非你打算时,不要通过不同的方式安装同样的事情两次。 (如果你打算做的蟒蛇,你可能要退房
virtualenv
) - 在你的路径顺序上眼睛
PATH
和考虑,如果它是正确的。 - 当安装模块,清楚这蟒(或PIP)正在运行,并且被安装在模块的位置。
那么,为什么我解决我自己的情况?
因为已经已经搞乱了,似乎是非常难以治愈,所以最后我通过一个完整的操作系统重新安装解决了这个问题,并开始按照上面的DOS的和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的自制软件安装,但确实有python3安装。 在/ usr /斌/ 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/...
请注意“/图书馆/ Python的...这是的Mac OS的Python版本。 但我想留严格对用户安装的版本(即自制)。
因此,这里是我做过什么来解决这个:
$ 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...
它不再/库/ ..但在/ usr /本地。
现在它找到了我所有PIP安装的模块! 问题解决了!
更新:
更新冲泡1.5.4版本后,它似乎是符号链接被删除。 现在你要添加到您的路径:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
阅读“BREW信息蟒蛇”的注意事项部分:
==> 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发行到指定的文件夹,您可以使用--prefix
Python安装过程中的方案。 使用前缀方案 ,例如,你可以安装Python 2.7到该文件夹/opt/py27
。 现在,为了使用新安装的Python发行,你必须: 清理你PATH和LD_LIBRARY_PATH:
- 删除所有“旧” Python的路径和
- 配置(根据我的例子)这样的环境变量:
- PATH:将/ opt / py27 /箱
- LD_LIBRARY_PATH:将/ opt / py27 / lib目录
而已。
(如果你需要的Python的多种环境安装在同一时间,我建议看看的virtualenv )
这里还有一个很好的解决方案来管理不同的Python版本:
https://github.com/pyenv/pyenv
(我已经在这里给出了一个答案,但还是决定发布此作为附加或备选答案)