2017-08-01 3 views
1

私はここや他の場所で同じことを尋ねてきましたが、彼らが提供している回答は機能していないか、その答えを誤解しています。カスタムディレクトリをインポートする

私はPython 3を使用しています。CityNames.pyCities.pyにインポートする必要があります。

私は、次のディレクトリがあります。

CityBorders 
    | Cities.py 
    | CityNames.py 

やファイルに次のコード:

Cities.py

from CityNames import * 
from random import choice 


class City: 
    def __init__(self): 
     self.set_name() 

    def set_name(self): 
     if hasattr(self, 'name'): 
      city_names[self.name] = None 

     self.name = choice([n for n, c in city_names.items() if c is None]) 
     city_names[self.name] = self 


def get_cities(count): 
    return [City() for _ in range(min(count, len(city_names)))] 


cities = get_cities(20) 
print([c.name for c in cities]) 

CityNames.py

をこのコードでは

、プログラムが正しく実行するようだが、PyCharmは、言って致命的なエラーを示している「This inspection detects names that should resolve but don't. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-level and class-level items are supported better than instance items.」それは言葉CityNamescity_namesの下に赤い下線が追加されます。

私は(from .CityNames import *CityNames.を追加すると、エラーが離れて行くが、コードは、私はそれを実行しようとする私に、次のエラーコードを与える作業を停止します。

また
Traceback (most recent call last): 
    File "S:/Makai/Projects/Artifitial Art/CityBorders/Cities.py", line 1, in <module> 
    from .CityNames import * 
ModuleNotFoundError: No module named '__main__.CityNames'; '__main__' is not a package 

、見たとき他の人から質問された質問の多くは、__init__.pyをディレクトリに追加することを話しています。私はそれがなぜ、なぜ私がそれを追加するのかわからない。私がそれを加えると、違いはないようです。ファイルに何かを入れるか空白のままにする必要がありますか?

+0

それは私のために働く。あなたはPyCharmの外でそれを実行しようとしましたか? – dashiell

+0

あなたは[** _十億時間の相対輸入_ **](https://stackoverflow.com/questions/14132789/relative-imports-for-the-billionth-time)を読むべきでしょう。 – martineau

+1

https://stackoverflow.com/questions/21236824/unresolved-reference-issue-in-pycharm多分これはそれにいくつかの光を当てるだろう – dashiell

答えて

1

私はまたPyCharm、そう

どの程度使用:

私が使用して私のDjangoのプロジェクトで
from . import CityNames.city_names as cn 

from . import views 

そして、それは完璧な作品を!

関連する問題