凌乱的Python安装? (OS X)

时间:2015-05-17 21:16:21

标签: python macos python-2.7 virtualenv python-3.4

我是Python和OS X终端的完全初学者,我试图为Python 2.7.3和Python 3.4安装一些软件包。

我无法在安装后使用 mechanize 来使用Python 2或Python 3。我明白了:

>>> from mechanize import *
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/XXX/Desktop/mechanize-0.2.5/mechanize/__init__.py", line 119, in <module>
    from _version import __version__
ImportError: No module named '_version'

在试图理解为什么它在我的桌面上搜索模块位置(我下载了源代码并从中运行 setup.py )时,我想知道我的Python安装是否混乱。

我已经在我知道的三个不同位置找到了Python的东西:

  

Macintosh HD / Library / Frameworks / Python.framework / 3.4 / - [这是存储Python 3及其网站包的地方]

     

Macintosh HD / System / Library / Frameworks / Python.framework / Versions / 2.7 / - [我在这里找不到任何网站包]

     

Macintosh HD / Library / Python / 2.7 / - [此文件夹中只有网站包,没有别的]

最后一个错位了吗?

我或许应该提一下,我默认使用终端中的非管理员/非sudo用户。因此,当我安装软件包时,我会这样做:

su -l admin
sudo easy_install xxx or sudo python3 setup.py install

理想情况下,我想清理我的Python安装,删除我安装的软件包,并使用 virtualenv 虚拟地放置所有内容。

4 个答案:

答案 0 :(得分:6)

OS X预装了Python。究竟哪个版本取决于您的OS X版本(例如,10.10附带2.6和2.7,10.8附带2.5-2.7加上部分安装2.3,而10.3附带2.3)。

这些安装在/System/Library/Frameworks/Python.framework/Versions/2.*中,其网站包位于/Library/Python/2.*内。 (他们在不同地方的原因是/System/Library只应由OS安装/升级写入。)

你不能删除预安装的Python版本而不会破坏操作系统(即使你可以,他们只是在下次操作系统更新时重新安装)。

但是如果你只打算使用Python 3.4,你可以忽略 Apple给你的2.x版本。来自python.org或其他主要来源(如Homebrew)的至少Python 3.2+的所有版本都将遵循PEP 394,这意味着您将获得python3pip3等命令不要与Apple安装的python等命令发生冲突。

另外,您提到在您的问题中使用虚拟环境。这是一个好主意。无论您使用stdlib的venv还是第三方virtualenv,您都可以创建单独的Python 3.4环境。当您进入活动虚拟环境时,其pip将安装到其站点包而不是全局包。如果您真的搞砸了一个环境,只需停用并执行rm -rf path/to/environment并重新创建它就可以非常轻松地清理它。

作为旁注,您几乎不想使用easy_install。如果您安装了Python 3.4,它附带pip,因此为其安装软件包的正确方法是:

[sudo] pip3 install xxx

即使你有一个setup.py,除非它是非pip - 兼容(现在大多数都是,但有些不是),你可能想要使用它而不是setup.py 1}}手动,像这样:

[sudo] pip3 install .

此外,python.org安装程序还可以选择使site-packages目录可写入组。如果您启用了该功能,则使用sudo,因为这样您最终会得到一个可写和不可写混合的网站包,以及卸载或升级将成为一场噩梦。 (使用此选项的一个很好的优点是永远不会使用sudo意味着你永远不会意外地为Apple的Python 2.7安装任何东西,因为如果你尝试过,你会得到一个权限错误。但缺点很明显。这就是为什么它的原因一个选项。)

那么,你怎么从这里到达那里?

  • 您可能希望pip list > requirementspip freeze > requirements获取已安装的所有软件包的列表。 (前者更易于阅读,后者可以直接与pip install -r requirements一起使用,以便在清理完后自动重新安装相同的软件包。)如果你想用2.7和3.4,你可能想要这样做为两者安装了pip并且让事情变得混乱。
  • 卸载Python 3.4。
  • 卸载为Apple的Python 2.7安装的所有网站包。 (您已经知道它们在哪里,所以,即使您没有使用pip安装它们,也可以手动卸载它们。请注意它们可能遗留了ipython或类似的脚本/usr/local/bin。)
  • 从python.org安装最新的Python 3.4。
  • [sudo] pip3 install您想要全局的所有套餐。 (这可能一点也不,或只是virtualenv。)
  • 使用venvvirtualenv为要保持独立的每个项目创建虚拟环境,并使用其pip而不是全局项目来安装特定环境的软件包

答案 1 :(得分:2)

不要删除os x附带的python,因为有几件事取决于安装。

清理python 3安装后,您应该使用虚拟环境,因为它们可以为您节省很多痛苦。然后你可以指定使用哪个python版本(你可以安装你想要的每个版本),你安装的每个软件包都是为这个特定的环境安装的,你的系统的全局python仍然完好无损。

要开始设置虚拟环境,我建议您阅读pyenv和pyenv-virtualenv

https://github.com/yyuu/pyenv https://github.com/yyuu/pyenv-virtualenv

答案 2 :(得分:0)

尝试使用命令行python3并将其与脚本一起使用。并按此运行。

python3 myscript.py

答案 3 :(得分:-3)

您可以清理现有的Python内容并试用Conda