2013-03-03 64 views
4

我的確意識到這是一個不好的問題,但我一直在嘗試一個小時,但我無法做到。如何以.py文件的形式安裝Python模塊?

所以,我有一個Python腳本,我想修改一下,作爲一個Python初學者來玩。然而,在腳本的最開始,有這樣的:

from priodict import priority_dict 

現在,我有一個名爲priodict.py文件與腳本來了。但是,如何將它提供給腳本,使其可以像這樣被包含?

Python手冊有關於安裝模塊的頁面和頁面,但它們似乎都指代將被放置在某些目錄中的「包」等等。我只有.py文件時該怎麼辦?

我知道可能對此有一個平庸的一句話迴應,但我感到沮喪,而且時間不夠,所以我決定採取簡單的方法,並讓Stack對此溢出瞭解。

看來,如果我沒有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

+1

你可能已經改變了'dijkstra.py'文件。代碼不應該產生NameError(並且與安裝模塊無關)。 – jfs 2013-03-03 18:24:42

+0

你是對的,當文件在同一個目錄下時,錯誤確實是不同的 - 但仍然存在錯誤。如果有人能夠高層次地分析可能會出現什麼問題,那麼我將新錯誤和鏈接提供給問題中的文件。 – jovan 2013-03-03 18:27:45

+0

您可能會收到第一個錯誤的唯一方法是如果您刪除或更改了'from ... import'行。我不知道你是如何得到第二個錯誤,但我認爲這也是因爲你改變了一些東西。嘗試使用這些文件的原始版本而無需更改任何內容。 – interjay 2013-03-03 18:30:40

回答

3

的Plac e將文件放在同一個目錄中,這會讓你開始。似乎你已經想出了很多。如果你只有一個.py文件,那就是你通常所期望的。

如果您無法從模塊導入名稱,通常意味着該名稱不在該模塊中。試試:

import priodict 
print dir(priodict) 

priority_dict列出?如果沒有,是否有一個類似的命名屬性,可能是你在找什麼?可能是因爲給你的指示拼寫錯誤,就像_不需要。

如果在導入行上失敗,可能是因爲模塊代碼本身存在錯誤,必須先進行更正。你會得到一個錯誤,告訴你大概它在哪裏。