2

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

4

3 回答 3

4

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

授予对虚拟环境的全局站点包目录的访问权限

--no-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
于 2012-09-17T16:36:00.543 回答
0

将目录添加到 $HOME 命名lib将目录添加到命名python

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

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

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

注销终端并重新登录

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

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

如果你下载了一个 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 是一个更强大的解决方案,但有时很难正确设置。如果您只需要一些自定义包,这只是一些东西......

于 2012-09-17T16:48:48.733 回答
0

您也可以将您需要的软件包复制到您有权访问的目录中。然后在 __init__.py 你应该这样修改 python 路径:

import sys
sys.path.append("/path/to/the_dir/with_packages")
于 2012-09-18T04:18:17.003 回答