我可以使用VirtualEnv安装一些附加的软件包吗?

2024-06-17 09:20:11 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我正在使用Python和其他一些包(比如virtualenv)开发共享web服务器。我可以使用virtualenv在特定目录中安装一些我需要的附加软件包,同时仍然使用系统范围内的python和软件包吗?或者更好的是,我可以在自己的目录中安装额外的python包,并将它们用于我的网站,而不需要sudo权限?在


Tags: 服务器目录web权限virtualenv网站系统sudo
3条回答

您可以使用 system-site-packages开关在virtualenv中显式地包括所有全局安装的包:

Give access to the global site-packages dir to the virtual environment

或者使用 no-site-packages开关禁用全局站点包:

Don't give access to the global site-packages dir to the virtual environment

后者目前是默认值。在

我个人已经在我的全球站点包中安装了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

你也可以把你需要的软件包复制到你有权限的目录中。然后在u init_uu.py中,您应该按如下方式修改python路径:

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

将一个名为lib的目录添加到名为python的目录中

将新目录添加到路径/pythonpath.bashrc和.bash_配置文件中

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

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

注销终端并重新登录

echo $PYTHONPATH以确保它有您的~/lib/python文件夹

使用wget https://downloadgit clone package/repo下载所需的python包

如果您下载了一个压缩文件,请将其解压缩tar -xvf somefile.tar.bz

切换到解压缩它的目录

cd some_package\

跑设置.py带着家庭标签

python setup.py install HOME=~

测试一下

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

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

另一方面,我发现virtualenv是一个更健壮的解决方案,但是偶尔很难正确设置。如果你只需要一些定制的软件包。。。

相关问题 更多 >