我第一次尝试在服务器上使用python应用程序。我首先以root身份添加setuptools:
[root@server mydirectory]# yum install python-setuptools
冷却。然后我尝试setup.py:
[user@server mydirectory]$ python setup.py install
running install
error: can't create or remove files in install directory
The following error occurred while trying to add or remove files in the
installation directory:
[Errno 13] Permission denied: '/usr/lib/python2.4/site-packages/test-easy-install-25752.write-test'
此目录/usr/lib/python2.4/site-packages
由root拥有,因此这是有道理的。
我的问题是,我应该chmod the site-packages目录,还是应该以root身份运行setup.py?
答案 0 :(得分:1)
作为非root用户在系统范围内安装内容的传统方法是使用sudo
。这就是为什么你在Python文档中看到这样的东西:
sudo python setup.py install
有些人更喜欢将某个“dev”组的网站包组写为可写,因此您不需要这样做。 (这实际上是Mac包经理Homebrew所做的。)
或者,您可以安装到每个用户的站点包中。并非每个项目都可以做到这一点,但基于现代setuptools
的任何事情都应该能够做到这一点。
而且,虽然我们正在使用它,但如果您正在安装基于现代setuptools
的内容,那么最好pip install .
而不是python setup.py install
。除了其他好处之外,这将创建egg-info文件,以便可以将包检测为依赖项,卸载等。
有关详细信息,请参阅Python Packaging User Guide。
最后,您可能需要考虑使用virtual environment。使用Python 3.3+,它内置为venv
,尽管它在3.4之前没有自己的pip
。使用早期版本的Python,您可以在PyPI上安装virtualenv
。
Python(2.x或3.x)的许多托管服务器环境预先安装了virtualenv
。如果没有,在系统范围内安装 it 当然要求你成为root用户...但之后,你将能够将(大多数)其他软件包安装到每个项目的虚拟环境而不是系统范围内
答案 1 :(得分:1)
使用pip / easy_install安装软件包并直接运行setup.py文件需要root权限,因为它们在这些受限文件夹中读/写。
通常像www.openshift.com这样的主机为您支持virtualenv,因此您只需激活它,并拥有自己的每用户环境。通常禁止影响全局站点包,因为它可能是共享主机。
根据我的经验,在本地安装ubuntu的笔记本电脑中,我有两种选择:
也许您的主机(如果共享)支持virtualenv。试着问他们是否不支持它。