我是Python的新手,但我决定使用their tutorial来试用金字塔web应用程序框架。我修改了一些步骤,使其与我所理解的使用现代工具处理此问题的适当方式保持同步。
作为背景,virtualenv和my python (版本3.4)安装在我的Mac (Yosemite)和macports上。
这是我所做的:
$ virtualenv swapenv
Using base prefix '/opt/local/Library/Frameworks/Python.framework/Versions/3.4'
New python executable in swapenv/bin/python3.4
Also creating executable in swapenv/bin/python
Installing setuptools, pip...done.
$ source swapenv/bin/activate
(swapenv)$ pip install pyramid
... (successful install of pyramid with some warnings) ...到现在为止还好。现在我试着检查是否可以验证安装,看看python找不到它。我撞了一个小时的头。然后考虑试试python3
(swapenv)$ python
Python 3.4.2 (default, Oct 19 2014, 11:45:18)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.51)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyramid
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'pyramid'
>>> exit()
(swapenv)$ python3
Python 3.4.2 (default, Oct 19 2014, 11:45:18)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.51)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyramid
>>> 因此,如果我使用python3,它可以工作,但python不能。我去验证了这些安装:
(swapenv)rook-4:bin nateford$ pwd
/Users/nateford/experiments/pyramid/swapenv/bin
(swapenv)rook-4:bin nateford$ which python
/Users/nateford/experiments/pyramid/swapenv/bin/python
(swapenv)rook-4:bin nateford$ which python3
/Users/nateford/experiments/pyramid/swapenv/bin/python3好的,那么指向不同的地方,对吧?或者不是...?
(swapenv)rook-4:bin nateford$ cd /Users/nateford/experiments/pyramid/swapenv/bin
(swapenv)rook-4:bin nateford$ ls -la python*
lrwxr-xr-x 1 nateford staff 9 Nov 14 16:25 python -> python3.4
lrwxr-xr-x 1 nateford staff 9 Nov 14 16:25 python3 -> python3.4
-rwxr-xr-x 1 nateford staff 13180 Nov 14 16:25 python3.4为什么使用python和使用python3会有不同的结果?有没有一种方法可以诊断这种差异?有没有办法纠正这种差异(我不打算使用Python2,所以我希望所有内容都指向python3)。
UPDATE:对于一个评论请求,python -m site命令输出以下内容
(swapenv)rook-4:bin nateford$ python -m site
sys.path = [
'/Users/nateford/experiments/pyramid/swapenv/bin',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/webapp-0.1-py3.4.egg',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python34.zip',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages',
]
USER_BASE: '/Users/nateford/Library/Python/3.4' (doesn't exist)
USER_SITE: '/Users/nateford/Library/Python/3.4/lib/python/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
(swapenv)rook-4:bin nateford$ python3 -m site
sys.path = [
'/Users/nateford/experiments/pyramid/swapenv/bin',
'/Users/nateford/experiments/pyramid/swapenv/lib/python34.zip',
'/Users/nateford/experiments/pyramid/swapenv/lib/python3.4',
'/Users/nateford/experiments/pyramid/swapenv/lib/python3.4/plat-darwin',
'/Users/nateford/experiments/pyramid/swapenv/lib/python3.4/lib-dynload',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4',
'/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin',
'/Users/nateford/experiments/pyramid/swapenv/lib/python3.4/site-packages',
]
USER_BASE: '/Users/nateford/.local' (doesn't exist)
USER_SITE: '/Users/nateford/.local/lib/python3.4/site-packages' (doesn't exist)
ENABLE_USER_SITE: False发布于 2015-12-12 08:21:23
似乎您的python和python3在创建虚拟环境时所指向的位置很重要。解决这个问题的第一步是确保MacPorts选择了正确的Python版本:
sudo port select --set python python34然后照常创建虚拟环境。这确保了pip、python别名和虚拟环境创建的bin链接都指向相同的方向。
https://stackoverflow.com/questions/26941221
复制相似问题