- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 python 包,我需要通过 pip
安装它作为我项目需求文件的一部分,但我需要将一些文件从我的包复制到安装这个包的项目。我正在考虑使用 setup()
中的 data_files 选项来做到这一 pip ,例如:
setup(
name='my_pacakge',
...
data_files=[
('example/folder1', ['something1/file1.ext', 'something1/file2.ext']),
('folder2', ['something2/file1.ext', 'something2/file2.ext']),
]
)
我希望将这些文件复制到相对于运行 pip install my_package
的目录的路径中,最好是我的项目根目录,留下如下树
project_root
├── example
│ └── folder1
│ ├── file1.ext
│ └── file2.ext
└── folder2
├── file1.ext
└── file2.ext
但为此我需要知道运行 pip install my_package 的绝对路径。我试过 inspect.stack
、inspect.currentframe
、sys.get_frame
、inspect.inspect.getouterframes(some_of_these_frames)
但这仅在安装时提供有关 setup.py 当前位置的信息,即像这样的目录
/private/var/folders/gq/vpylvs0d51162jtyqhtgdc6m0000gn/T/pip-tNcbvb-build
/var/folders/gq/vpylvs0d51162jtyqhtgdc6m0000gn/T/pip-6a8MKS-build/setup.py
这对我来说一 pip 用处都没有。
现在,我知道 setuptools
/setup.py
不应该这样使用,但我真的需要在可安装包中打包一些文件并复制/移动在安装时将它们添加到项目根目录。
关于如何实现这一 pip 有什么建议吗?
谢谢! :)
最佳答案
pkg_resources
此软件包随 setuptools 一起安装。
来自包文档字符串:
Docstring:
Package resource API
--------------------
A resource is a logical file contained within a package, or a logical
subdirectory thereof. The package resource API expects resource names
to have their path parts separated with ``/``, *not* whatever the local
path separator is. Do not use os.path operations to manipulate resource
names being passed into the API.
The package resource API is designed to work with normal filesystem packages,
.egg files, and unpacked .egg files. It can also work in a limited way with
.zip files and with custom PEP 302 loaders that support the ``get_data()``
method.
如果您使用 zip_safe = False
安装您的包,您的数据将在目录中可用。
使用 zip_safe = True
安装,它将成为 egg 的一部分。但是如果你需要使用那里的文件,这很容易,pkg_resources
提供了一组很好的函数和方法
请注意,这甚至适用于 zipsafe True 安装。
只需将您的数据放入与您的包目录相关的目录中。然后从您的代码中:
import pkg_resources
fname = pkg_resources.resource_filename("your.package.name", "folder/example1.txt")
不要尝试在其中放置任何正在更改的文件。从技术上讲这是可能的(使用 zip_safe = False
文件就在那里),但这绝对是糟糕的设计(许可,包更新)。
pip
初始化你的项目,最好提供一些appinit
命令使用 pip
将数据安装到应用程序目录是真正的滥用。
我建议定义一个由我们的程序安装的命令,如 appinit
,并在需要填充目录时使用它。 buildout
(由 zc.buildout
安装)等命令经常使用这种模式。
关于python - setup.py, pip - 获取python包的原始执行路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23548595/
我需要编辑或替换 About Setup 中的文本Inno Setup 的对话框文本。 这是一张图片: 在互联网上查看我得到了这个代码: [Files] Source: CallbackCtrl.dl
我最近发现一些旧的 PC 游戏可以在我的 Windows 10 64 位计算机上玩。我查看了各种在线资源以使游戏正常运行。现在我有兴趣为使游戏正常运行所采取的所有各种步骤创建一个自定义安装程序。我成功
是否可以获得用于 Inno Setup 安装程序的 Inno Setup 版本号? 我找不到记录的开关来返回其版本号(例如 5.5.6),而且似乎没有暴露给 Inno Setup 脚本的预定义版本常量
如何更改 setup-*.bin(Inno Setup 内部压缩存档文件)的名称、扩展名和位置 默认存档位置:{src} 我要的位置:{src}\Data(Data是一个文件夹。) 最佳答案 有很多方
这是用于 Inno Setup 的 [Setup] 部分中的 LicenseFile 属性的标准 RTF 文档: 是否可以向此页面添加打印按钮以触发打印许可协议(protocol)? 我看到了一个类似
我有一个 Inno Setup 脚本可以将我的应用程序变成一个 exe。 当我使用 Inno Setup 版本 6 编译代码时,输出文件大小为 110MB(如 Windows Explorer 大
编译了 Inno Setup 脚本 (IS v5.4.2),但是当运行生成的 Setup.exe 时,出现了一个错误对话框,内容如下: 内部错误:ExtractTemporaryFile:找不到文件“
Inno Setup - 我想创建一个类似于屏幕截图的安装程序。 安装程序应在左侧突出显示当前步骤。 如何实现? 最佳答案 @Bill_Stewart 是正确的,普通的 Inno Setup 不提供如
图像作为安装程序背景。如何使用 inno 5.5.9 做到这一点? 最佳答案 我认为这在 Inno Setup 中是不可能的。也许是一些 Inno Setup 克隆。 问题是Inno Setup中的所
这个问题在这里已经有了答案: Inno Setup - Signing fails with "Sign Tool failed with exit code 0x1" (2 个答案) 关闭 3 年
如何获取有关安装程序中包含的文件的信息(最后修改时间戳、文件大小)?通过使用文件的路径,很容易引用磁盘上的文件。但是当文件没有路径时,如何在安装程序中引用它呢? 当安装程序初始化时,我想检查磁盘上是否
Inno Setup 中的单词补全是如何工作的? 如果我在代码中的任何标识符或单词的中间或末尾按 Alt+Right,则没有任何反应。 我找不到任何要安装的扩展,也找不到该主题的 Internet 答
从这里开始:Inno Setup Placing image/control on custom page . 这是做我需要的: CustomPage := CreateCustomPage(wpLi
我的安装程序在组件页面中有一个可视错误。在您开始向下滚动页面之前看起来还不错,但开始看起来一团糟。 我认为问题出在代码中的某个地方,但仅在绝对干净的脚本上重新创建了组件部分,问题仍然存在。尝试更改缩放
如何在 Inno Setup 编译器中为我们的设置提供背景全屏图像。 喜欢下面这张图。 最佳答案 不要那样做。这违反了 Windows 设计指南。 无论如何,如果必须,请使用 WindowVisibl
如何在代码中使用 [Setup] 部分的值? 我怀疑我没有正确使用该工具;也许我应该以完全不同的方式来做这件事。 [Setup] MyValue=some value [code] function
如何自定义 Inno Setup 安装程序的欢迎页面? 我想创建一个类似于 Skype 安装程序的安装程序,只有 3 个页面: 带有一些选项的自定义欢迎页面 进度页 使用“运行程序”选项完成页面 但是
我已经为我想更新的程序创建了文件。 我希望在安装之前,检查程序是否也在标准目录中,如果不是,则正确的目录可以选择程序所在的位置。 我试过这个: [Files] Source: "C:\Data"; D
我想在您选择安装位置的页面之后创建一个自定义向导页面。 我已经在 InitializeWizard 中看到了如何创建自定义页面并将它们添加到向导中。程序。 我的问题是,当我创建自定义页面时,安装位置选
我已经安装了我的程序。但是如果我尝试再次安装它,它会安装并且程序被替换。 我看到这个问题 Inno Setup - How to display notifying message while ins
我是一名优秀的程序员,十分优秀!