如何告诉Python disutils.core安装函数在不同的根目录下安装?
我有一个Python脚本:如何告诉Python disutils.core安装函数在不同的根目录下安装?,python,distutils,Python,Distutils,我有一个Python脚本: #!/usr/bin/env python from distutils.core import setup, Extension MOD = 'sysinfo' setup( name=MOD, ext_modules=[ Extension( MOD, sources=['python_module.c'] ) ] ) 当我运行它时,我得到: $./set
#!/usr/bin/env python
from distutils.core import setup, Extension
MOD = 'sysinfo'
setup(
name=MOD,
ext_modules=[
Extension(
MOD,
sources=['python_module.c']
)
]
)
当我运行它时,我得到:
$./setup.py install
running install
running build
running build_ext
running install_lib
copying build/lib.linux-x86_64-2.7/sysinfo.so -> /usr/lib64/python2.7/site-packages
error: /usr/lib64/python2.7/site-packages/sysinfo.so: Permission denied
自然-我不想也没有权限写入/usr
目录。相反,我希望安装到另一个目录,在这个目录下我有一个linux目录结构。比如说,我想安装到/home/mark/usr/lib64/python2.7/site包中
我研究了distutils.core
文档,并使用了--help
,但找不到在其他根目录下安装的任何选项
如何执行此操作?/setup.py install
在python安装中将该软件包安装到全局站点软件包中/
,使其可供系统的所有用户使用
/setup.py install--用户
将软件包安装到您家中的本地站点软件包/
(~/.local/lib/pythonX.Y/site-packages/
)中,使其仅对您可用
./setup.py install --root ~/custom/directory/
安装到~/custom/directory/usr/lib64/pythonX.Y/site packages/
是否应该为此安装virtualenv?或者这不是你想要的for@ycx我不这么认为。我没有安装virtualenv的root权限,也不想安装其他Python发行版。我只是不喜欢默认情况下将安装
功能安装到系统目录,我不知道如何将其更改为安装到我自己的自定义目录。谢谢!但是有没有办法安装到任何自定义目录中:~/custom/directory/usr/lib64/pythonX.Y/site packages/
/setup.py install--root~/custom/directory/
或/setup.py install--prefix~/custom/directory/usr/lib64/
。但是,您必须在PATH
中包含~/custom/directory/usr/lib64/bin/
,在PYTHONPATH
中包含~/custom/directory/usr/lib64/
,这意味着您要模拟virtualenv
。在我看来,最好是pip安装--user virtualenv
并使用virtualenv
。谢谢---root
成功了!但我不明白,为什么这个选项没有记录在任何地方??我试图搜索distutils.core的Py代码,但这花费了太多时间,我仍然没有找到类似--root
选项的东西。请回答,我会接受的。不,我不需要在PATH env变量中包含任何内容-我不需要使用python安装-我只需要在那里安装,就像我在问题中所说的那样。也许distutils.core设置不适合我的情况,但是其他人使用了它,我不想对代码做太多更改。你说这个选项没有任何文档记录是什么意思?当然是这样。运行python setup.py install--help | grep root
。好的,这是我作为一名程序员所做的事情,我做过很多py编程,但我想我不是大师。我运行python setup.py
,它失败了,我查看了setup.py
的代码内部,我看到了distutils.core setup
函数的用法,它失败了,我查看了文档,没有提到任何root
选项。用--help
运行整个脚本我从来没有想过,因为显然,代码中没有任何东西(对非大师)表明任何这样的选项都是可用的。