附件是一个zip文件,其中包含我遇到问题的文件:https://www.dropbox.com/s/2btesdznqevjhz7/airship-pypa.zip?dl=0
基本上我有三个子目录:airship
,airship.icloud
和airship.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模块加载正常,为什么不是Steam云模块?
分支问题:是否有更好的方法可以在不执行try
的情况下检查是否已安装软件包?
答案 0 :(得分:0)
您不应在Python文件和目录的名称中加点。这让人感到困惑。
Python不会查找名为/Library/Python/2.7/site-packages/airship/steamcloud/airship.steamcloud.py
的文件。如果我正确理解您的代码和错误,它正在寻找名为/Library/Python/2.7/site-packages/airship/steamcloud.py
的文件。