Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python virtualenv如何处理软件包?_Python_Macos_Path_Virtualenv_Env - Fatal编程技术网

Python virtualenv如何处理软件包?

Python virtualenv如何处理软件包?,python,macos,path,virtualenv,env,Python,Macos,Path,Virtualenv,Env,我真的很困惑virtualenv是如何处理软件包的。我在OSX上,用自制软件安装了python2和3,然后安装了pip安装virtualenv 在终端: cd Virtualenv/MyTestEnv . bin/activate pip install numpy 将numpy安装到我的virtualenv文件夹中,只有在该环境中运行我的程序才能访问该文件夹。据我所知,它通过修改系统$PATH来实现这一点。 但是,当我尝试使用numpy运行程序时,我无法: (MyTestEnv)______

我真的很困惑virtualenv是如何处理软件包的。我在OSX上,用自制软件安装了python2和3,然后安装了
pip安装virtualenv

在终端:

cd Virtualenv/MyTestEnv
. bin/activate
pip install numpy
将numpy安装到我的virtualenv文件夹中,只有在该环境中运行我的程序才能访问该文件夹。据我所知,它通过修改系统$PATH来实现这一点。 但是,当我尝试使用numpy运行程序时,我无法:

(MyTestEnv)___________________
| ~/desktop/Python @ My-MBP (chronologos) 
| => ./wordsrt.py
Traceback (most recent call last):
  File "./wordsrt.py", line 2, in <module>
    import numpy
ImportError: No module named numpy
当我执行
pip列表时
numpy显示为已安装?这是hashbang的问题吗?
谢谢你的帮助

我设法解决了我的问题

首先,我修改了我的bashrc,使之仅在virtualenv开启时允许pip:

# pip should only run if there is a virtualenv currently activated
export PIP_REQUIRE_VIRTUALENV=true
# cache pip-installed packages to avoid re-downloading
export PIP_DOWNLOAD_CACHE=$HOME/.pip/cache
syspip(){
   PIP_REQUIRE_VIRTUALENV="" pip "$@"
}
然后,为了确保用户安装的二进制文件优先,我将其添加到我的bash_配置文件中
导出路径=/usr/local/bin:$PATH

这就是问题所在:

#!/usr/bin/env python
从virtualenv运行python的另一种方法是

MyTestEnv/bin/python wordsrt.py

试试这个。

首先,
$PATH
与站点包的位置无关;这就是shell用来查找可执行文件的方法
$PYTHONPATH
是Python的
sys.path
的起始值。但是,您可能以某种方式运行系统范围的
pip
而不是virtualenv的
pip
。如果您使用的是足够新的版本,我相信它可以检测到您在virtualenv中运行系统
pip
,并向您发出错误/警告或安装到virtualenv中,那么…您使用的是
pip
1.5吗?如果没有,请先尝试升级。另外,请记住,OSX已经自带了自己的Python 2.7,因此通过自制安装另一个,您打开了一罐可能不想处理的蠕虫。例如,您路径上的第一个
pip
很容易就是Apple Python 2.7
pip
,而
Python
是自制的Python 2.7(特别是因为这两个安装都喜欢将脚本安装到
/usr/local/bin
,Python的标准尝试是消除给出
python2.7
pip-2.7
的歧义,当它们都是2.7时,类似的名称也没有帮助).所以,如果你真的不需要自制2.7,我会卸载它。谢谢大家的回答。我在下面发布了我所做的。
MyTestEnv/bin/python wordsrt.py