2012-10-29 40 views
1

首先讓我告訴你,我是一個新用戶,我剛剛開始在大學學習Python,所以如果在其他主題回答這個問題,我很抱歉,但我搜索,我似乎無法找到它。Python - 在哪裏粘貼文件導入

我收到了我老師的文件work.pyc,他說我必須使用命令from work import *將它導入到我的Wing IDE中,問題是我不知道將文件導入到哪裏。它只是說ImportError: No module named work

謝謝

+2

我有點擔心你的老師是1)給你一個'.pyc'文件和2)沒有給出足夠的說明如何導入它! –

+1

什麼@JonClements說+「3)建議'進口*'」 –

回答

3

有幾種選擇。 最簡單的方法是將其放在與想要導入它的py文件相同的文件夾中。

你也可能想看看this

+1

快速和簡單的答案。完成!非常感謝,我希望我能開始幫助別人。謝謝 – user1783702

2

如果你在一個文件夾中project稱爲main.py腳本的工作,一個選擇是將其放置在project/work.pyc

這將使模塊因爲它與代碼位於相同的工作目錄中。

Python的解決import語句的方式是這樣的(簡體):您正在使用

Python解釋器(/usr/bin/python2.6例如,可以有幾個您的系統上)具有它看起來的搜索路徑列表爲可導入的代碼。這份名單是在sys.path你可以通過發射了你的解釋,並打印出來這樣看待它:

>>> import sys 
>>> from pprint import pprint 
>>> pprint(sys.path) 

sys.path通常包含標準庫中的路徑,模塊,附加安裝包(通常是在定點包)以及可能的其他第三方模塊。

當您執行類似import foo的操作時,Python會首先查看腳本所在目錄中是否存在名爲foo.py的模塊。如果沒有,它會搜索sys.path並嘗試從那裏導入它。

正如我所說的,這個解釋有點簡化。細節在關於module search path的部分中解釋。

注1:*.pyc你有遞給是compiled Python bytecode。這意味着它的內容是二進制的,它包含由Python虛擬機執行的指令,而不是通常處理的*.py中的源代碼。

注2: 老師給你做的建議from work import *是一個相當糟糕的建議。在交互式解釋器中進行測試可能沒有問題,但是您應該在實際代碼中使用而不是。相反,你應該這樣做from work import chop, hack

主要原因:

  • 命名空間污染。您可能會導入不需要的東西,但仍會污染您的全局名稱空間。
  • 可讀性。如果您曾經閱讀某人的代碼並想知道foo來自哪裏,只需向上滾動並查看導入內容,即可看到導入的具體位置。如果該人使用import *,則不能這樣做。
2

如果你使用Python解釋器(就是那個讓你直接輸入Python代碼到它並執行),你必須這樣做:

sys.path.append('newpath') 

from work import * 

其中NEWPATH是你的文件系統上包含你的work.pyc文件的路徑