gpt4 book ai didi

python - 在 Python egg sdist 安装目录中安装静态文件

转载 作者:行者123 更新时间:2023-11-28 19:29:32 25 4
gpt4 key购买 nike

我是creating a Python3 application这取决于项目中的静态文件目录。

项目结构:

myBlanky
\__blankys
\__bootstrap
|__google_app_engine
\__my_blanky
\____init__.py
|__my_blanky.py
|__file_system_utils.py
setup.py
MANIFEST.in
README.md
LICENSE
.travis.yml
setup.cfg

因此,在我的根目录中,我有 1 个 Python 模块 (my_blanky)、各种 Python 项目文件( list 、setup.py 等)和 1 个充满静态数据的目录 (blankys)。

我之前在为我的应用程序创建 .tar.gz 包时遇到了麻烦,但是在创建 MANIFEST.in 文件并编辑我的 setup.py 文件后,我能够使用以下命令成功创建 .tar.gz:python3 setup.py sdist

我的设置.py:

from setuptools import setup
from my_blanky import version

setup(name="myBlanky",
...url, author, etc info here...
packages=["my_blanky"],
include_package_data=True,
package_data={'blankys': ['blankys/*']},
zip_safe=False,
entry_points={"console_scripts": ["myblanky = my_blanky.my_blanky:main"]},
install_requires=['docopt==0.6.1'])

我的 MANIFEST.in:

recursive-include blankys *
include *.md
include LICENSE
include setup.cfg

运行 python3 setup.py sdist 后,我打开创建的 .tar.gz 文件,它包含我需要的所有数据(blankys 目录、my_blanky 模块、所有根目录静态文件) 所以它包含了我需要的所有静态文件,太棒了。

然后我开始使用 pip 安装 .tar.gz:find ./dist -iname "*.tar.gz"-print0 | xargs -0 pip install 它成功运行,没有错误。 (安装它的输出不显示有关静态文件的任何信息,但我认为它不会以任何方式显示。)

问题来了。我的 python 项目现在应该安装在我的机器上。我可以在我的机器上运行 myblankymyblanky -v 并且一切正常。一切都在运行。但是当我尝试运行任何代码,如 myblanky list 试图访问静态文件目录“blankys”时,它会说 /usr/local/lib/python3 中没有这样的目录.4/dist-packages/my_blanky/。我手动浏览到该位置,那里唯一的文件是我的 Python 模块 my_blanky 源文件。父目录:/usr/local/lib/python3.4/dist-packages/ 也根本不包含任何静态文件。

当我 pip 安装我的项目时,我希望静态目录 blankys 被复制到 dist-packages 位置。我希望该目录与我的 my_blanky 模块目录一起存在,因此我可以使用该静态文件目录在我的程序中搜索我的相对路径。


因此,如果静态文件很好地安装到我的 .tar.gz 包中并且在我的机器上安装似乎成功了,那么我的静态文件在已安装的 dist-package 中在哪里?我正在从 .tar.gz 在我的机器上安装项目,其中包含静态文件/目录,那么为什么没有在安装中复制这些文件?只有 python 模块 my_blanky 被复制过来。

更新(2020):对于这个问题的 future 读者,一些人评论说我在 2014 年给出的原始问题和答案没有意义或帮助解决他们的问题。抱歉,自 2014 年以来我就没有碰过这段代码,我无法改进这个问题或答案。我把它留在这里以防它有帮助,但我无法在这方面提供任何进一步的帮助。

最佳答案

更新(2020 年):对于这个答案的 future 读者,一些人评论说我在 2014 年给出的原始问题和答案没有意义或帮助解决他们的问题。抱歉,自 2014 年以来我就没有碰过这段代码,我无法改进这个问题或答案。我把它留在这里以防它有帮助,但我无法在这方面提供任何进一步的帮助。


我觉得我已经解决了这个问题。

基本上我的问题是我有一个“settings.config”文件,我希望能够在用户机器上访问整个系统。因此,我不想将 settings.config 文件放在我的程序找不到的某个随机目录中,而是希望在系统上有一个它可以找到和操作的 settings.config 文件,所以我在我的问题中问你如何去做在 distutils 中执行此操作。

当我今天清理机器的主目录时,我意识到我的想法完全错了。应用程序一直在做这个想法,它在系统中的某个地方有一个配置文件,它可以访问。它位于 ~/.config/etc 或在 Windows 上:%APPDATA%。我在上面的问题中问过如何在 /usr/local/lib/python3 中安装 settings.config 文件,但这是错误的。那不是我应该做的,就像其他所有程序所做的那样。

所以回答我的问题:您不能在 /usr/local/lib/python3 中安装数据文件,这是有充分理由的。而是使用 ~/.config/etc%APPDATA%

关于python - 在 Python egg sdist 安装目录中安装静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25836377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com