Python打包问题:没有名为steamcloud的模块

2024-04-23 15:13:40 发布

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

附件是一个zip文件,其中包含我遇到问题的文件:https://www.dropbox.com/s/2btesdznqevjhz7/airship-pypa.zip?dl=0

基本上我有三个子目录:airshipairship.icloudairship.steamcloud。每个都有一个setup.py文件和一个airship子目录,以及包含正确文件的适当子目录,例如airship.icloud/airship/icloud/airship.icloud.py。我在这三个目录中运行了sudo pip install -U .,并且pip list显示了所有安装的三个软件包。但是,当我尝试运行airship(指向airship/airship/__init__.py的入口点)时,它无法导入steamcloud包:

Traceback (most recent call last):
  File "/usr/local/bin/airship", line 9, in <module>
    load_entry_point('airship==1.1', 'console_scripts', 'airship')()
  File "/Library/Python/2.7/site-packages/airship/__init__.py", line 4, in main
    airship.sync()
  File "/Library/Python/2.7/site-packages/airship/airship.py", line 21, in sync
    module = importlib.import_module('.' + modulename, 'airship')
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named steamcloud

相关代码:

modules = {'steamcloud': None, 'icloud': None}
modulenum = 0

for modulename in modules:
    # try:
        module = importlib.import_module('.' + modulename, 'airship')
        if module.init():
            print(modulename + ' was imported')
            modules[modulename] = module
            modulenum += 1
    # except:
        # pass

try语句意味着用户可能没有安装相关的包,但是已经被注释掉以进行调试,就像添加了print语句一样。你知道吗

我可以确认/Library/Python/2.7/site-packages/airship/steamcloud/airship.steamcloud.py存在并且有正确的代码。你知道吗

iCloud模块加载正常,那么为什么蒸汽云模块没有加载呢?你知道吗

分支问题:有没有更好的方法来检查是否安装了包而不必执行try?你知道吗


Tags: 文件inpyimportinitpackageslinelibrary
1条回答
网友
1楼 · 发布于 2024-04-23 15:13:40

您不应该在Python文件和目录的名称中添加点。这让人困惑。你知道吗

Python没有查找名为/Library/Python/2.7/site-packages/airship/steamcloud/airship.steamcloud.py的文件。它正在寻找一个名为/Library/Python/2.7/site-packages/airship/steamcloud.py的文件,如果我正确理解了您的代码和错误的话。你知道吗

相关问题 更多 >