Python 对于setup.py安装,默认情况下使用另一个站点软件包目录

Python 对于setup.py安装,默认情况下使用另一个站点软件包目录,python,installation,setup.py,cpython,site-packages,Python,Installation,Setup.py,Cpython,Site Packages,我在应用程序中嵌入了Python。当用户通过安装程序包或模块时 {...}\myapp\python\python.exe setup.py install 这些软件包将安装在 {...}\myapp\python\lib\site-packages 默认情况下是否有机会使用另一个目录?我希望这将帮助您添加新的站点包目录将新的目录路径添加到路径配置文件中 路径配置文件将允许您添加其他站点包目录。如果您不想要现有的站点包目录,可以将其从PYTHON路径中删除 echo“new_site-pac

我在应用程序中嵌入了Python。当用户通过安装程序包或模块时

{...}\myapp\python\python.exe setup.py install
这些软件包将安装在

{...}\myapp\python\lib\site-packages

默认情况下是否有机会使用另一个目录?

我希望这将帮助您添加新的站点包目录将新的目录路径添加到路径配置文件中

路径配置文件将允许您添加其他站点包目录。如果您不想要现有的站点包目录,可以将其从PYTHON路径中删除


echo“new_site-package_directory”>您的_site_packages_路径/usrlocal.pth

要做到这一点,您需要注意的事情很少。我做了一些研究,我发现:

本部分摘自:

在build命令运行之后(无论是显式运行,还是install命令为您执行),install命令的工作相对简单:它所要做的就是将build/lib(或build/lib.plat)下的所有内容复制到您选择的安装目录

如果不选择安装目录,即,如果只运行setup.py install,那么install命令将安装到第三方Python模块的标准位置。此位置因平台和Python本身的构建/安装方式而异

大多数Linux发行版都将Python作为系统的标准部分,因此在Linux上,prefix和exec prefix通常都是/usr。如果您自己在Linux(或任何类似Unix的系统)上构建Python,则默认前缀和exec前缀为/usr/local

prefix
exec prefix
代表Python安装到的目录,以及在运行时找到其库的位置

您可以在某一点上交替安装位置:您可以交替基本目录,但不能交替安装方案

Distutils install命令旨在使将模块分发版安装到备用位置变得简单和轻松。基本思想是为安装提供一个基本目录,install命令在这个基本目录下选择一组目录(称为安装方案),在其中安装文件。各平台的详细信息各不相同,因此请阅读以下适用于您的章节

“home scheme”背后的思想是构建和维护Python模块的个人存储库。此方案的名称来源于Unix上“主”目录的概念,因为Unix用户使其主目录具有类似于/usr/或/usr/local/的布局并不罕见。任何人都可以使用此方案,无论他们安装的操作系统是什么

python setup.py安装--home=

--home
选项定义安装基础目录。文件安装到安装库下的以下目录中,如下所示:

modules home/lib/python
scripts home/bin
data    home
C headers   home/include/python/distname
然后您需要修改以定位新位置

您还可以使用--prefix选项来定义安装基础
python setup.py安装——前缀=
。阅读更多关于它的信息



总而言之,您可以更改home目录,但站点包层次结构将构建在其中。希望这有帮助。

我尝试了*.pth文件,但我要么没有完全了解它,要么不是我想要的。它只是将目录添加到站点软件包中,在我的情况下,我想使用完全不同的站点软件包目录。顺便说一句,我尝试在没有虚拟机的情况下解决它。您是否尝试过
{…}\myapp\python\python.exe setup.py安装--prefix={…}\myapp`?您还可以使用pip:
pip3 install--install option=“--prefix=/some/location/outside/myapp/”/path/to/folder/with\u setup\u py/”,如果您添加了更多的上下文,可能会有所帮助,但我认为简短的答案是这些目录是内置的,因此您必须修补python安装才能做到这一点。非常感谢您的详细回答,这很有帮助!我仍然会试图找到另一个解决方案,但在最坏的情况下,我不得不简单地接受这一点,很难想象你会得到比这更彻底的答案。你能指定你认为它缺少什么吗?@HelloWorld正在使用
virtualenv
选项?@charlesreid:我的评论似乎不清楚。“寻找另一种解决方案”的意思是找到一种完全不同的方法,从根本上解决问题,但答案是完美的,回答了我的问题。我试图避免对virtualenv的依赖,但我会尝试一下。谢谢!但不幸的是,它并没有取代旧的站点包目录