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