Easy_install's --prefix option doesn't change where it tries to install my package

别来无恙 提交于 2019-12-12 12:05:28

问题


I want to install Sphinx 1.1.3 for python 2.6. However, I don't have sudo rights. So instead of installing it in the default place, I want to set a different location, using --prefix. Doing the following:

-bash-3.2$ easy_install Sphinx-1.1.3-py2.6.egg --prefix=/homes/ndeklein/python2.6/site-packages/

gives me:

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-18534.write-test'

The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:

/usr/lib/python2.4/site-packages/

Am I typing something wrong with the prefix? Also, what I could use instead (which I've used with other packages):

python setup.py install --home=/homes/ndeklein/python2.6/site-packages/

but I can't find the setup.py script. I'm guessing that EGGs don't have a setup.py script, is that true?


回答1:


This website discusses non-root python installs. It might be useful to you...

http://www.astropython.org/tutorials/user-rootsudo-free-installation-of-python-modules7/

To quote a little bit of it:

A user configuration file, ~/.pydistutils.cfg, will override the internal system path for python package installations, redirecting the built libraries (lib), scripts (bin) and data (share) into user owned and specified directories. You must simply tell the python installer where theses directories are located.

The user file, ~/.pydistutils.cfg, has the following lines, using a pretty obvious syntax:

[install]
install_scripts = ~/usr/bin
install_data = ~/usr/share
install_lib = ~/usr/lib/python2.4/site-packages

Of course, whatever directories you specify there should probably exist and you should put them at the front of your PYTHONPATH:

export PYTHONPATH=~/usr/lib/python2.4/site-packages:${PYTHONPATH}

It also looks like more modern python installations (compared to the things in the link) should be able to use the ~/.local directory:

easy_install --prefix=~/.local ...

There is also:

easy_install --user ...

which will install to a user-specific site directory.




回答2:


You need to specify options before the package, so the command should be:

easy_install --prefix=/homes/ndeklein/python2.6/site-packages/ Sphinx-1.1.3-py2.6.egg 



回答3:


You could try using pip install of easy_install(pip is recommended over easy_install these days)

Then you can just use

pip install --user Sphinx

see http://www.pip-installer.org/en/latest/installing.html on how to install pip if needed

You may also want to pip install virtualenv and work inside virtualenv(where pip will install all packages in a local site packages folder). see http://pypi.python.org/pypi/virtualenv for more info.



来源:https://stackoverflow.com/questions/10009967/easy-installs-prefix-option-doesnt-change-where-it-tries-to-install-my-packa

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!