问题标签 [setuptools]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python 守护进程打包最佳实践
我有一个我用 python 编写的工具,通常应该作为守护进程运行。打包此工具以进行分发的最佳实践是什么,特别是应如何处理设置文件和守护程序可执行文件/脚本?
相关地,是否有任何通用工具用于设置适合给定平台的启动时运行的守护程序(即Linux 上的初始化脚本、Windows 上的服务、OS X 上的启动)?
python - 如何使用 pkg_resources 手动注册分发?
我正在尝试在 Google App Engine 上安装一个包。该软件包相当广泛地依赖于pkg_resources
,但无法setup.py
在 App Engine 上运行。
但是,源代码中没有特定于平台的代码,因此只需压缩源代码并将其包含在系统路径中是没有问题的。而且我已经pkg_resources
安装了一个版本并且可以正常工作。
唯一的问题是让包实际注册,pkg_resources
所以当它调用时,iter_entry_points
它可以找到合适的插件。
我需要调用哪些方法来sys.path
使用所有适当的元数据注册模块,以及如何确定元数据需要是什么?
python - 从 setuptools 包中排除顶级目录
我正在尝试使用 setuptools 将 Python 项目放入 tarball。问题是 setuptools 似乎不喜欢最初设置源树的方式(不是我,我必须添加)。我真正想要分发的所有内容都在顶级目录中,而不是像 setuptools 文档所说的那样在子目录中。
树有一个目录,tests
,我不想在发布的包中拥有它。但是,使用exclude_package_data
似乎并没有真正做任何排除,我想弄清楚我做错了什么。
我setup.py
看起来像这样,在相关部分:
python - 无法安装 python-setuptools: ./configure: 没有这样的文件或目录
该问题与“Unable to install Python without sudo access”的答案有关。
我需要安装 python-setuptools 来安装 python 模块。我已经解压了安装包。
配置时出现以下错误
我在程序的主页上没有找到解决方案。
如何解决此错误?
python - 当作为函数调用时,将额外的查找链接添加到 easy_install 的正确方法是什么?
我需要调用 easy_install 作为从一堆服务器安装一些 Python 鸡蛋的函数。确切地说,我安装什么以及从哪里获取它是在运行时确定的:例如,我使用哪些服务器取决于计算机的地理位置。
由于我不能保证任何单个服务器始终可用,因此决定我的脚本需要检查多个服务器。有些地方有禁止的网络过滤,所以我需要检查一个 UNC 路径。其他位置需要我检查混音,如下例所示:
当我不提供 find-links 选项 (-f) 时,它似乎工作得很好(在这种情况下,它只是从 distutils.cfg 中获取默认值),当我尝试指定一个额外的 find-links 选项时,我得到的是:
有人可以确认正确的方法吗?例如,我是在参数中使用 Windows 还是 UNIX 斜杠?必须使用什么字符来分隔多个 URL?
我在 Windows32 上使用 setuptools 0.6c9
python - 为什么 setuptools 有时会删除然后重新安装完全相同的 egg?
我正在尝试在已经存在相同鸡蛋的计算机上安装鸡蛋。为什么它会删除鸡蛋然后重新安装它?我从带有选项的脚本调用easy_install:
在运行 easy_install 命令时观察到:
这是什么原因造成的?为什么有时鸡蛋会被移除并重新安装,而有时会保留鸡蛋?我已经在我自己的 PC 上看到过几次这种情况,但我不确定如何始终如一地重现这种行为。
我正在使用 setuptools 0.6c9
python - 如何在不安装的情况下将 Python 扩展模块打包为可加载的蛋?
我正在修改我们的构建脚本以基于出色的 Waf 工具(我确实使用 SCons 很长时间了,但它太慢了) 。
无论如何,我遇到了以下情况,我找不到解决办法:
- 我有一个依赖于许多先前构建的 egg 文件的产品。
- 我正在尝试使用PyInstaller打包产品作为构建过程的一部分。
- 我首先构建依赖项。
- 接下来我要运行 PyInstaller 来打包依赖于我构建的鸡蛋的产品。我需要 PyInstaller 能够在打包过程中加载这些 egg 文件。
这听起来很简单:您计算出PYTHONPATH
应该是什么,构建sys.environ
正确设置变量的副本,然后使用subprocess.Popen
传递先前配置的环境作为 env 参数来调用 PyInstaller 脚本。
问题是,PYTHONPATH
如果您添加的鸡蛋是打包为 zipsafe 的扩展模块,那么单独设置似乎是不够的。在这种情况下,事实证明嵌入式库无法导入。
如果我解压缩鸡蛋(将目录重命名为 .egg),我可以在没有进一步设置的情况下导入它们,但在这种情况下这不是我想要的。
我还可以通过执行以下操作从子外壳中导入鸡蛋:
- 设置
PYTHONPATH
为包含您要导入的鸡蛋的目录(不是鸡蛋本身的路径) - 加载一个 python shell 并使用
pkg_resources.require
它来定位鸡蛋。
完成此操作后,鸡蛋将正常加载。同样,这不切实际,因为我需要能够以准备好从关闭导入这些鸡蛋的方式运行我的 python shell。
肮脏的选择是在调用真正的目标脚本之前输出一个执行上述操作的包装脚本,但这似乎是错误的做法:必须有更好的方法来做到这一点。
python - 如何使用 Python setuptools 为一组定义的鸡蛋加载入口点?
我想在 setuptools 中使用入口点功能。
在很多情况下,我想严格控制正在运行的鸡蛋列表,以及有助于一组入口点的扩展:
- 鸡蛋集成测试,我想在不同的鸡蛋组合上运行多个测试套件。
- 扫描鸡蛋/插件的单个目录,以便运行同一程序的两个不同实例,但使用不同的鸡蛋。
- 开发时间,我正在开发一个或多个鸡蛋,并希望将程序作为正常编辑运行周期的一部分运行。
我查看了 setuptools 文档,虽然它没有说这是不可能的,但我一定错过了一些说明如何做的事情。
以不同于默认系统范围发现的方式部署插件的最佳方法是什么?
python - 来自一个 setup.py 的多个项目?
我当前的setup.py(使用 setuptools)安装了两个东西,一个是tvdb_api
(一个 API 包装器),另一个是tvnamer
(一个命令行脚本)
我希望将两者分别提供,以便用户可以这样做..
..只获取 API 包装器,或者..
..安装tvnamer(和tvdb_api,作为要求)
如果没有两个单独的setup.py
脚本,这可能吗?你能有两个来自同一个python setup.py upload
命令的独立 PyPi 包吗?
python - 解释 Python 入口点?
我已经阅读了 Pylons 和 Peak 页面上关于 egg 入口点的文档,但我仍然不太明白。有人可以向我解释吗?