4

私はこれが厄介な質問であることを理解していますが、私は1時間努力していて、それを正しく理解することができません。

だから、私は少し修正して、Pythonの初心者として遊んでみたいPythonスクリプトを持っています。ただし、スクリプトの冒頭には、次のようなものがあります。

from priodict import priority_dict

priodict.pyこれで、スクリプトに付属しているという名前のファイルができました。しかし、スクリプトで利用できるようにして、そのように含めることができるようにするにはどうすればよいですか?

Pythonマニュアルには、モジュールのインストールに関するページとページがありますが、それらはすべて、特定のディレクトリなどに配置される「パッケージ」を参照しているようです。.pyファイルしかない場合はどうすればよいですか?

おそらくこれに対するbanaleの1文の応答があることは知っていますが、私はイライラしていて時間が足りないので、簡単な方法でStackoverに質問することにしました。

priodict.pyファイルがない場合、次のエラーが発生するようです。

Traceback (most recent call last):
  File "C:\Python27\scripts\dijksta.py", line 192, in <module>
    main()
  File "C:\Python27\scripts\dijksta.py", line 185, in main
    D, _ = dijkstra(G, 1, v)
  File "C:\Python27\scripts\dijksta.py", line 139, in dijkstra
    Q = priority_dict() # est.dist. of non-final vert.
NameError: global name 'priority_dict' is not defined

スクリプトと同じディレクトリにファイルを配置すると、次のエラーが発生します。

Traceback (most recent call last):
  File "C:\Python27\scripts\dijksta.py", line 2, in <module>
    from priodict import priority_dict
ImportError: cannot import name priority_dict

問題のファイルは次のとおりです。

https://github.com/kqdtran/ADA1/tree/master/dijkstra

4

1 に答える 1

3

同じディレクトリにファイルを配置すると、開始できます。あなたはそれだけ理解しているようです。あなたが持っているのが.pyファイルだけである場合、それはあなたが通常することを期待されていることです。

モジュールから名前をインポートできない場合は、通常、そのモジュールに名前が存在しないことを意味します。試す:

import priodict
print dir(priodict)

priority_dict記載されていますか?そうでない場合、あなたが探しているものであるかもしれない同様の名前の属性がありますか?_が必要なかったように、与えられた指示のつづりが間違っていた可能性があります。

インポート行で失敗した場合は、モジュールコード自体にエラーがあり、最初に修正する必要がある可能性があります。おおよその場所を示すエラーが表示されます。

于 2013-03-06T21:56:25.973 に答える