2015-08-28 65 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

相关问题