.egg文件的路径不工作(操作系统路径目录名)

2024-09-19 23:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个废蜘蛛正在使用gettext来翻译一些字符串。本地化文件存储在/locale/中。在

加载翻译时,我使用以下代码:

t = gettext.translation('sv', localedir=LOCALE_DIR, languages=['sv'])

在中设置了LOCALE_DIR设置.py代码如下:

^{pr2}$

当我使用scrapy crawl spider在本地运行代码时,这非常有效。但是当我将它部署到scrapyd时,它会生成一个.egg文件,并且无法再找到本地化文件。当我从部署的版本打印LOCALE_DIR时。它给了我/tmp/condobot-1428391146-4QuH3E.egg/locale。在

我想这就是文件找不到的原因。路径是文件的子文件夹,这没有意义。我所期望的是.egg文件将被提取到一个文件夹中,路径将指向/tmp/condobot-1428391146-4quh3e/locale。在

  • 有没有其他更好的方法可以将路径设置为LOCALE_DIR,而不是我目前的方法?我也尝试过将其设置为locale,但没有得到更好的结果。在

编辑:我确实使用setup.py文件,代码如下:

from setuptools import setup, find_packages

setup(
    name         = 'project',
    version      = '1.0',
    packages     = find_packages(),
    entry_points = {'scrapy': ['settings = condobot.settings']},
    package_data = {
        # If any package contains *.txt or *.rst files, include them:
        '': ['*.mo', '*.po', '*.txt'],
    },
)

我也试着用下面的方法设置.py用一个清单.in文件:

from setuptools import setup, find_packages

setup(
    name = 'project',
    install_requires = ['distribute'],
    version = '1.0',
    packages = find_packages(),
    entry_points = {'scrapy': ['settings = condobot.settings']},
    include_package_data = True,
    zip_safe = False,
)

在清单.in在

recursive-include locale *
recursive-include condobot/locale *

我的文件结构如下:

- condobot
    - locale
        - sv
            - LC_MESSAGES
                sv.mo
    pipelines.py
    settings.py
- locale
    - sv
        - LC_MESSAGES
            sv.mo
MANIFEST.in
requirements.txt
scrapy.cfg
setup.py

(我将/locale/文件夹放在/和/condobot/中,以确保路径没有错误。)

我已经提取了.egg文件,我可以确认它确实包含/locale/文件夹,并且在/locale/文件夹中有{}和{}。在

所以问题似乎不是设置.py文件不包括.egg文件中的文件。似乎路径/......./file.egg/locale/不起作用。在


Tags: 文件代码py路径文件夹settingseggpackages
1条回答
网友
1楼 · 发布于 2024-09-19 23:33:55

在python模块打包为egg之后,确保任何其他非源文件都可以访问的方法是指定zip_safe为{},以便在安装时完全提取包,即:

setup(
    name         = 'project',
    version      = '1.0',
    ...
    zip_safe     = False,
)

相关问题 更多 >