如果我正在使用 Python 和其他一些包(如已安装的 virtualenv)在共享 Web 服务器上工作。我可以使用 virtualenv 在特定目录中安装一些我需要的额外软件包,同时仍然使用系统范围的 python 和软件包,或者更好的是我可以在我自己的目录中安装额外的 python 软件包并将它们用于我的网站而不需要 sudo 权限吗?
3 回答
--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
将目录添加到 $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 是一个更强大的解决方案,但有时很难正确设置。如果您只需要一些自定义包,这只是一些东西......
您也可以将您需要的软件包复制到您有权访问的目录中。然后在 __init__.py 你应该这样修改 python 路径:
import sys
sys.path.append("/path/to/the_dir/with_packages")