凌乱 Python 安装? (OS X)
Messy Python install? (OS X)
我是 Python 和 OS X 终端的完全初学者,我尝试为 Python 2.7.3 和 [=37= 安装一些软件包] 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/ – [This is where Python 3 and its site-packages are stored]
Macintosh HD/System/Library/Frameworks/Python.framework/Versions/2.7/ – [I can't find any site-packages here]
Macintosh HD/Library/Python/2.7/ – [Only site-packages in this folder, nothing else]
最后一张放错了吗?
我或许应该提一下,我默认在终端中使用 non-admin/non-sudo 用户。所以当我安装软件包时,我会:
su -l admin
sudo easy_install xxx or sudo python3 setup.py install
理想情况下,我想清理我的 Python 安装,删除我安装的软件包,然后使用 virtualenv 虚拟放置所有内容。
您可以清理现有的 Python 内容并试用 Conda。
不要删除 os x 附带的 python,因为有几件事取决于该安装。
清理 python 3 安装后,您应该使用虚拟环境,因为它们可以为您省去很多麻烦。然后你可以指定要使用哪个 python 版本(你可以安装你想要的每个版本)并且你安装的每个包都只是为这个特定的环境安装并且你的系统的全局 python 保持不变。
要开始设置虚拟环境,我建议阅读 pyenv 和 pyenv-virtualenv
https://github.com/yyuu/pyenv
https://github.com/yyuu/pyenv-virtualenv
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 installs/upgrades 写入。)
您无法在不破坏 OS 的情况下删除 Python 的预安装版本(而且,即使可以,它们也会在下一个 OS更新)。
但是,如果您只打算使用 Python 3.4,则可以 忽略 Apple 提供给您的 2.x 版本。所有来自 python.org 或其他主要来源(如 Homebrew)的至少 Python 3.2+ 版本将遵循 PEP 394,这意味着您将获得 python3
、pip3
, 等不与 Apple 安装的 python
, 等命令冲突的命令。
此外,您在问题中提到了使用虚拟环境。这是一个好主意。无论您使用标准库的 venv
or the third-party 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
手动,像这样:
[sudo] pip3 install .
此外,python.org 安装程序可以选择将站点包目录设为组可写。如果你启用了它,你应该 而不是 使用 sudo
,因为那样你最终会得到一个混合了可写和不可写的站点包,并且卸载或升级将成为一场噩梦。 (使用此选项的一个好处是从不使用 sudo
意味着您永远不会意外安装任何适用于 Apple 的 Python 2.7 的东西,因为如果您尝试过会出现权限错误。但缺点是显而易见的. 这就是为什么它是一个选项。)
那么,你如何从这里到达那里?
- 您可能需要
pip list > requirements
或 pip 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
。)
- 使用
venv
或 virtualenv
为每个你想保持独立的项目创建一个虚拟环境,并使用它的 pip
而不是全局的来安装包具体环境。
只需尝试使用命令行 python3 并将其与您的脚本一起使用。 运行 就像这样。
python3 myscript.py
我是 Python 和 OS X 终端的完全初学者,我尝试为 Python 2.7.3 和 [=37= 安装一些软件包] 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/ – [This is where Python 3 and its site-packages are stored]
Macintosh HD/System/Library/Frameworks/Python.framework/Versions/2.7/ – [I can't find any site-packages here]
Macintosh HD/Library/Python/2.7/ – [Only site-packages in this folder, nothing else]
最后一张放错了吗?
我或许应该提一下,我默认在终端中使用 non-admin/non-sudo 用户。所以当我安装软件包时,我会:
su -l admin
sudo easy_install xxx or sudo python3 setup.py install
理想情况下,我想清理我的 Python 安装,删除我安装的软件包,然后使用 virtualenv 虚拟放置所有内容。
您可以清理现有的 Python 内容并试用 Conda。
不要删除 os x 附带的 python,因为有几件事取决于该安装。
清理 python 3 安装后,您应该使用虚拟环境,因为它们可以为您省去很多麻烦。然后你可以指定要使用哪个 python 版本(你可以安装你想要的每个版本)并且你安装的每个包都只是为这个特定的环境安装并且你的系统的全局 python 保持不变。
要开始设置虚拟环境,我建议阅读 pyenv 和 pyenv-virtualenv
https://github.com/yyuu/pyenv https://github.com/yyuu/pyenv-virtualenv
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 installs/upgrades 写入。)
您无法在不破坏 OS 的情况下删除 Python 的预安装版本(而且,即使可以,它们也会在下一个 OS更新)。
但是,如果您只打算使用 Python 3.4,则可以 忽略 Apple 提供给您的 2.x 版本。所有来自 python.org 或其他主要来源(如 Homebrew)的至少 Python 3.2+ 版本将遵循 PEP 394,这意味着您将获得 python3
、pip3
, 等不与 Apple 安装的 python
, 等命令冲突的命令。
此外,您在问题中提到了使用虚拟环境。这是一个好主意。无论您使用标准库的 venv
or the third-party 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
手动,像这样:
[sudo] pip3 install .
此外,python.org 安装程序可以选择将站点包目录设为组可写。如果你启用了它,你应该 而不是 使用 sudo
,因为那样你最终会得到一个混合了可写和不可写的站点包,并且卸载或升级将成为一场噩梦。 (使用此选项的一个好处是从不使用 sudo
意味着您永远不会意外安装任何适用于 Apple 的 Python 2.7 的东西,因为如果您尝试过会出现权限错误。但缺点是显而易见的. 这就是为什么它是一个选项。)
那么,你如何从这里到达那里?
- 您可能需要
pip list > requirements
或pip 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
。)- 使用
venv
或virtualenv
为每个你想保持独立的项目创建一个虚拟环境,并使用它的pip
而不是全局的来安装包具体环境。
只需尝试使用命令行 python3 并将其与您的脚本一起使用。 运行 就像这样。
python3 myscript.py