问题标签 [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 - 强制解压某些 egg 目录
我有一个我自己构建的 PyQt 应用程序的 egg 分发版,它包含 sphinx 生成的文档。当我从应用程序调用帮助文件时,它会在 QtWebKit.QWebView 窗口中打开 sphinx index.html。显然,只有 index.html 文件从 egg 中提取到操作系统的 egg 目录中(例如 Windows 下的 [..]\Application Data\Python-Eggs\)。
这会导致 css 损坏、图像损坏和链接损坏,因为这些其他文件似乎没有被解包;它们存在于 egg 文件中,但不在 egg-directory 中。
我在这里错过了什么吗?有没有办法立即强制解压缩所有 html、css、图像文件?
python - setuptools 测试隐藏导入错误。如何获得更好的信息?
在 python setuptools 中,python setup.py test 运行测试套件。但是,如果我的测试套件中有导入错误,我获得的唯一错误消息是 AttributeError 抱怨我的测试类丢失。有没有办法获得更详细的错误消息,所以我可以修复测试套件?
我将通过以下示例更好地解释自己。假设我有一个名为 foo 的包,用 paste 重新创建。然后我添加测试
现在,假设 mytest.py 包含以下代码
这行得通。但是,如果我尝试导入不存在的模块
这是我得到的错误
换句话说,没有提到失败的导入。
python - 'setup.py test' 鸡蛋安装位置?
我在一个目录中预先下载了我的项目需要的所有鸡蛋,我希望 setuptools只从该目录安装包。
在我的setup.cfg
我有:
我运行python setup.py develop
,它找到并正确安装了所有软件包。
对于测试,我有一个附加要求,在setup.py
.
这个 egg 也驻留在本地../../setup
目录中。
我跑python setup.py test
了,它看到了依赖关系并找到了../../setup
很好的鸡蛋。但是,鸡蛋被安装到我的当前目录,而不是site-packages
与其余鸡蛋的目录。
我已经尝试在命令行install-dir
中和命令行上指定两者,setup.cfg
但似乎都不适用于该tests
命令。
我可以将依赖项添加到该install_requires
部分,但如果可能的话,我想将安装和测试所需的内容分开。
如何将依赖项保留在该tests_require
部分中,但将其安装到site-packages
目录中?
python - 使用 distutils/setuptools 配置扩展模块
我有一个 Python 项目,其中包含用 C 编写的多个扩展模块,它们与第三方库通信。但是,根据用户的环境和选项,不应构建某些模块,并且应启用/禁用某些编译器标志。问题是我必须在调用 setup() 之前构建扩展模块列表,理想情况下我想使用 distutils.Command 子类来处理用户选项。现在我有几个选择:
需要在构建模块之前运行“python setup.py configure”命令,将信息存储在 pickle 文件中,并在脚本下次运行时使用它来生成扩展列表。这就是我的项目目前的工作方式,这似乎很愚蠢。
手动从 sys.argv 中抓取选项并使用它们来构建列表。这不是一个长期的解决方案,因为我最终会想在构建之前运行一些脚本来检查设置。
从 distutils 子类 build_ext,在 run() 方法的开头进行我的配置(可能也使用通过 (2) 发送的选项)并在构建之前直接修改 self.distribution.ext_modules。但是,我担心这可能会使 setuptools 混淆,因为它可能假定在调用 setup() 时扩展模块列表是固定的。这也意味着当使用 build_ext 以外的命令调用 setup() 时,扩展模块列表为空。
有没有首选的方法来做到这一点?
installation - 将附属数据(id/logo)嵌入安装程序的解决方案
我想到了一个解决方案(我猜是基于服务器的解决方案),它可以即时将附属 ID/徽标插入 Windows 安装程序(setup.exe,设置一个视频转换器程序,没什么特别的)。
我看到这样的过程:
1) 用户点击带有会员 ID 的链接,链接请求服务器下载文件,系统将会员的徽标和 ID 插入到此安装程序中......但我想这个解决方案是一个科幻小说,因为我可以'无法想象这可以在几秒钟内即时完成。
2) 作为第二种方法,我看到了一个脚本/程序,它自动创建带有附属公司徽标和 ID 的设置文件,并将其存储在服务器上,例如,每天一次。
市场上有任何可用的解决方案吗?或者,也许,这可以通过简单的十六进制编辑来实现?
python - 确定 easy_install/setuptools 的版本
我正在尝试安装 couchapp,它使用 easy_install - 并且非常明确地说明需要特定版本的 easy_install/setuptools:0.6c6。我的 Mac 上似乎已经安装了 easy_install,但是没有命令行参数来检查版本。我想先看看是否有必要,而不是仅仅在顶部安装一个新版本。
所以:关于如何查看我在我的机器上安装的 setuptools/easy_install 版本的任何指示?
我不是 Python 开发人员,所以我假设这是一个简单的问题。但是,我没有通过谷歌或在 SOF 上找到任何东西。
python - 安装 setuptools 后找不到 pkg_resources
我正在尝试在 Debian 5.0.3(64 位)上编译和安装 python2.6.4。我使用“make altinstall”安装,因为我想将 Deb5.0 附带的 python 2.5.2 作为我的默认 python。
在此之后,我使用命令“sudo sh setuptools-0.6c11-py2.6.egg --prefix=/usr/local”安装了 setuptools 0.6c11。但是,当我尝试从 python2.6 'import pkg_resources' 安装后,它不起作用说'ImportError:没有名为 pkg_resources 的模块'。没有 pkg_resources,我几乎无能为力。
有人可以在这里分享可能出了什么问题或缺少什么吗?
python - setuptools“至少其中一个”依赖规范
在某些情况下,有各种模块,每个模块都实现了一个公共 API(在我的例子中,旧的 pure-python elementtree
、cElementTree
、lxml.etree
和 built-in xml.etree
)。我可以编写模块ElementTree
来尝试这些选项中的每一个,并根据我自己的偏好顺序采用第一个存在的模块——但我找不到任何关于指定只有其中一个必须安装在setup.py
. 我想写一些看起来像这样的东西:
这是可能的吗?
python - 分发 python 应用程序
我有一个简单的 python 应用程序,我的目录结构如下:
- 项目/
- 主文件
- 配置文件
- 插件/
- 插件1
- 插件2
- ...
Config.py 只加载配置文件,它本身不包含任何配置信息。
我现在想分发这个程序,我想我会使用 setuptools 来做。预计用户将使用的文件是 main.py,因此其中一个明确进入 /usr/bin,其余文件进入 /usr/share/project。
但是有一个问题:我需要以某种方式告诉 main.py 在共享目录中查找 config.py。但是我不能确定共享目录到底在哪里,因为这取决于 setuptools,对吧?
分发基于 Python 的应用程序时的最佳实践是什么?
python - 如何在我的包中获取 setup.py (setuptools) 中定义的版本?
如何setup.py
从我的包中获取定义的版本(用于--version
或其他目的)?