2016-09-29 109 views
0

我使用Windows,並有一個目錄是這樣的:PIP說,這是一個包,由蟒蛇說,這是不是

troopcalc/ 
    setup.py 
    troopcalc/ 
     __init__.py 
     troopcalc.py 
     troopcfg.py 
     tests/ 
      __init__.py 
      test_troopcalc.py 
      test_troopcfg.py 

我使用PIP安裝包......和PIP列表顯示了包安裝並指向目錄結構的頂部。


troopcfg.py

class TroopCfg(object): 
... 

troopcalc.py

from troopcalc.troopcfg import TroopCfg 

setup.py

from setuptools import setup 

setup(name='troopcalc', 
    version='0.1', 
    description='Calculates troop distribution', 
    url='...', 
    author='Randell ...', 
    author_email='...', 
    packages=['troopcalc', 'troopcalc.tests', 'troopcalc.data'], 
    package_dir={'troopcalc': 'troopcalc', 'troopcalc.tests': 'troopcalc/tests', 'troopcalc.data': 'troopcalc/data'}, 
    package_data={'troopcalc.data': ['*.json']}, 
    ) 

如果我跑python .\troopcalc.py我得到如下:

Traceback (most recent call last): 
    File ".\troopcalc.py", line 2, in <module> 
    from troopcalc.troopcfg import TroopCfg 
    File "...\python\troopcalc\troopcalc\troopcalc.py", line 2, in <module> 
    from troopcalc.troopcfg import TroopCfg 
ImportError: No module named 'troopcalc.troopcfg'; 'troopcalc' is not a package 

PIP說,這是一個包,但蟒蛇說,這是不是。目標不是使用絕對路徑當然。我錯過了什麼?

謝謝。

+0

你可以發佈所有Python文件中的所有導入行嗎?你也可以修復目錄結構的格式,因爲它很難理解。 – Steve

+0

是啊,對不起,我沒有注意到目錄結構被砸了。 __init __。py's全部爲空。 – Randell

+0

小心打破它,我確實已經爲你修好了 – gia

回答

1

如果我跑python .\troopcalc.py我得到如下:

嗯,是的。 Python認爲troopcalctroopcalc.py,因爲這在sys.path的目錄中。

python -m troopcalc.troopcalc 
+0

爲了運行'。\ troopcalc.py',他必須已經在troopcalc目錄中,所以這不起作用。 –

+0

不知道我關注。是的,troopcalc.py在那裏,但是當我使用'import troopcalc.troopcfg'時不應該尋找一個包而不是一個模塊? – Randell

+0

它只會查找'sys.path'中的目錄。如果你正在運行'troopcalc.py',那麼'troopcalc'包將不會在'sys.path'中的任何目錄中找到。 –