2015-08-28 47 views
0

我已經分別使用notepad ++和text-wrangler在win pc和mac osx上建立了我的編程環境。在這兩臺計算機上,我都設置了python34-> lib-> site-packages的快捷方式/別名,這樣我就可以從解釋器提示符中快速導入我的程序。在獲勝的PC我已經包含在環境變量路徑這一行:python程序導入並運行後,變量持續存在於IDLE但不是在cmd(win)或終端(osx)

C:\ Python34; C:\ Python34 \ Scripts中; C:\ Python34 \ LIB \站點包

這使我的訪問蟒蛇3.4從CMD 在OSX終端我只需輸入python3啓動解釋

這一切的偉大工程運行,我在教科書努力通過,但爲什麼它在進口模塊中的變量似乎是小的代碼示例只是暫時的?而在IDLE中,如果我打開相同的文件並運行 變量仍然可以識別。

例如

test.py 

word = 'pizza' 

print(

''' 
Slicing "Cheat Sheet" 

0 1 2 3 4 5 

+---+---+----+----+----+ 
| p | i | z | z | a | 
+---+---+----+---+-----+ 
-5 -4 -3 -2 -1 

''' 
) 

print ('Enter the beginning and ending index for your slice of "pizza".') 
print ('Press the enter key at the "Begin" to exit.') 

start = '' 

while start == '': 
    start = (input('\nStart: ')) 


    if start: 
     start = int(start) 

     finish = int(input('Finish: ')) 

     print('word [', start, ':', finish, '] is', end=' ') 
     print(word[start:finish]) 

input ('\n\nPress the enter key to exit.') 

在CMD或終端導入此運行的代碼。但給

nameerror名稱在提示輸入變量單詞後比薩餅‘「word'is不處於空閒模塊已經在可變字將得到分配表達運行打字後定義

而’。爲什麼是這樣?

+0

您應該使用'python -i test.py'來運行腳本,然後在Python的shell中與結果進行交互。 – eryksun

+0

另外,從'PATH'中刪除'site-packages'目錄。在該目錄中不應該有腳本,只有通過Python的sys.path找到的模塊。 – eryksun

+0

python -i test.py不起作用。返回'無法打開文件test.py:[Errno 2]沒有這樣的文件或目錄。 –

回答

0

你如何導入它?

from test.py import * 

應將所有變量導入命名空間。

簡單的「進口」不會讓你使用導入的文件使用的名稱

HERE更有關。
但一般來說,單獨的文件或創建一個類的全局變量將是更乾淨的方式來做到這一點。

1

我想你正在導入就像「導入測試」。那當然,這不是word,而是test.word。你可以做from test import word,甚至from test import *,但我想我不需要告訴你這通常不是一個好習慣(但是再一次,你所做的很多事情都不是很好的做法:)。

它爲什麼在IDLE中工作?可能是因爲你已經在某個時候作爲腳本(F5)運行你的文件。

+0

我是Python和編程的初學者,所以我不知道什麼是好的做法。如果它有效,並沒有明確提到它不應該在python.org上完成,那麼它會不會是一種壞習慣? –

+0

因此,如果文件作爲腳本運行,是否意味着它已被製作成可執行文件?嘗試從測試導入單詞和工作。謝謝。 –

+0

Guido明確反對將模塊作爲腳本運行(反之亦然,導入腳本)。 Python只是沒有針對這種用法進行優化。 -m與-i不同。有許多問題(例如,'import x'每個會話只能工作一次;遇到的命名空間問題是另一個問題),以及更多的是當你開始編寫包時。更不用說一直搞弄PYTHONPATH了。只需將python作爲'python -i test.py'(或在IDLE中使用F5)即可。而使腳本可執行與它無關,這是一個shell的東西(你可能不需要)。續... – Veky

相關問題