我可以使用VirtualEnv只安装一些其他软件包吗?

时间:2012-09-17 16:35:10

标签: python django virtualenv

如果我正在使用Python和其他一些软件包(例如virtualenv)已经安装的共享Web服务器上工作。我是否可以使用virtualenv在特定目录中安装我需要的其他软件包,同时仍然使用系统范围的python和软件包或者更好的是我还可以在我自己的目录中安装其他python软件包并将其用于我的网站而无需sudo权限吗?

3 个答案:

答案 0 :(得分:4)

您可以使用--system-site-packages开关明确地在virtualenv中包含所有全局安装的软件包:

  

授予对虚拟环境

的全局site-packages目录的访问权限

或禁用使用--no-site-packages开关的全球网站包:

  

不要授予对虚拟环境

的全局site-packages目录的访问权限

后者目前是默认值。

我个人在我的全球网站套餐中安装了lxml,因此我们可以将其用作小型演示:

$ virtualenv nositepackages
New python executable in nositepackages/bin/python
Installing setuptools............done.
Installing pip...c............done.
$ ./nositepackages/bin/python -c 'import lxml; print lxml.__package__'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named lxml
$ virtualenv --system-site-packages sitepackages
New python executable in sitepackages/bin/python
Installing setuptools............done.
Installing pip...............done.
$ ./sitepackages/bin/python -c 'import lxml; print lxml.__package__'
lxml

答案 1 :(得分:0)

将目录添加到名为lib的$ HOME中,将目录添加到名为python

的目录中

将新目录添加到路径/ pythonpath .bashrc和.bash_profile

nano ~/.bashrc然后添加export PYTHONPATH=$PYTHONPATH:~/lib/python,这会在未通过shell访问时设置您的环境(例如通过网站)

将同一行添加到.bash_profile,这会在您通过shell登录时控制您的环境

退出终端并重新登录

echo $PYTHONPATH确保它有〜/ lib / python文件夹

使用wget https://downloadgit clone package/repo

下载所需的python包

如果你下载了一个zip解压缩它tar -xvf somefile.tar.bz

切换到解压缩目录

cd some_package\

使用--HOME标记

运行setup.py

python setup.py install --HOME=~

测试它

python -c "import <package>;print <package>.VERSION;"

恭喜你刚刚安装了自定义软件包:)

在旁注上我发现virtualenv是一个更强大的解决方案,但偶尔也很难正确设置。如果你只需要一些自定义包......

答案 2 :(得分:0)

此外,您只需将您需要的软件包复制到您有权限的目录中即可。然后在__init__.py中你应该这样修改python路径:

import sys
sys.path.append("/path/to/the_dir/with_packages")