【问题标题】:How can I add a default path to look for python script files in?如何添加默认路径以在其中查找 python 脚本文件?
【发布时间】:2011-08-22 02:21:45
【问题描述】:

我总是在弄清楚如何在 Windows 中正确设置 Python 时遇到一些麻烦。

我已经设置了 path=%path%;C:\python27 ,所以我可以用 python 打开 .py 文件。我只是不知道如何更改保存目录。

例如,我将所有自定义脚本保存在 Documents/Python 目录中。这是Win7,所以没有我的文档。我希望能够在 IDLE 中输入“HelloWorld.py”并让它在这个文件夹中搜索任何匹配的脚本名称。不过,我还没有弄清楚如何将此目录添加到默认的 Python 搜索路径。

有什么想法吗?

这是一次尝试。

>>> import sys 
>>> sys.path 
['C:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages'] 
>>> sys.path.append('C:\Users\Jimmy\Documents\Python') 
>>> HelloWorld.py 
Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> HelloWorld.py NameError: name 'HelloWorld' is not defined `

【问题讨论】:

  • 你试过设置PYTHONPATH环境变量了吗?
  • 我确实设置了 PYTHONPATH=C:\Users\Jimmy\Documents\Python'
  • @S.Lott 还没有运气。
  • “我的文档/Python”不是“C:\Users\Jimmy\Documents\Python”。是哪个?

标签: python path directory


【解决方案1】:

我将此放在评论中,但我会在回答中添加更彻底的内容。目前尚不清楚您是想将 HelloWorld.py 作为脚本运行,还是想在其中导入某些内容。不过,它们是两件不同的事情。

如果您只想从 cmd 或 Powershell 运行 HelloWorld.py,那么您需要修改 PATH 环境变量。在 Windows 中,您可以在我的电脑 > 属性 > 高级 > 环境变量中执行此操作。单击 PATH,将路径添加到包含 HelloWorld.py 的文件夹并保存更改。您需要重新启动 cmd 或 Powershell 才能看到更改,并且更改将持续存在。 (换句话说,这是一个永久性的变化)

如果您希望能够导入 HelloWorld 内容,那么您有几个选择,但最简单的方法是将要导入的代码包装到 HelloWorld.py 中的函数中。所以说你当前的 HelloWorld.py 看起来像这样:

print "Hello World!"

改成这样:

def hello_world():
    print "Hello World!"

然后,您只需要将包含HelloWorld.py 的文件夹的路径添加到sys.path 中。听起来你已经这样做了。那么你就可以像这样导入:

import HelloWorld

HelloWorld.hello_world()
# Will output: "Hello World!"

如果您仍然希望 HelloWorld.py 能够像脚本一样运行,那么您需要将其添加到脚本的底部:

if __name__ == 'main':
    hello_world()

这告诉 Python 导入文件而不运行它,如果它正在被导入。如果它没有被导入,它将执行 if 块中的代码。

希望这可以解决问题。对于从 Python 开始的人来说,这绝对是一个常见的困惑来源。

【讨论】:

  • 抱歉,显示 if name == 'main' 的最后一部分被 Stack Overflow 入侵。它从 __ main__ 中去掉了双下划线。所以应该在'main'周围有双下划线,就像 name 一样
【解决方案2】:

请按照教程进行操作

sys.path.append(r'C:\Users\Jimmy\Documents\Python') 

您不能将\ 随机放入字符串中。

当您查看错误消息时,请注意系统提供的所有路径元素都有\\ 以转义\ 的含义。

教程将向您展示如何使用r" 字符串轻松实现此目的。

【讨论】:

    【解决方案3】:

    这不是运行脚本的工作方式。修改您的 %PATH% 环境变量以包含包含相关脚本的目录,然后从命令提示符而不是 IDLE 运行脚本。

    【讨论】:

    • 正如 Ignacio 提到的,您似乎将导入模块的概念与从您的 shell 中运行的脚本混合在一起。如果您希望能够只打开终端并键入 HelloWorld.py 而不会出现错误,那么您需要修改 PATH 环境变量以包含包含 HelloWorld.py 的路径。在 Windows 中,您可以通过右键单击“我的电脑”>“属性”>“高级”>“环境变量”来执行此操作。
    【解决方案4】:
    import sys
    sys.path.append(YOUR_PATH)  # or .insert(0, YOUR_PATH) may give higher priority
    

    或设置您的 $PYTHONPATH 环境变量

    【讨论】:

    • 谢谢,虽然我仍然得到 ' >>> import sys >>> sys.path ['C:\\Python27\\Lib\\idlelib', 'C:\\Windows\ \system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C: \\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages'] >>> sys.path.append('C:\ Users\Jimmy\Documents\Python') >>> HelloWorld.py Traceback(最近一次调用最后):文件“”,第 1 行,在 HelloWorld.py NameError: name 'HelloWorld' is not定义'
    • ` >>> import sys >>> sys.path ['C:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip' , 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\ lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages'] >>> sys.path.append('C:\Users\Jimmy\Documents\Python' ) >>> HelloWorld.py Traceback(最近一次调用最后一次):文件“”,第 1 行,在 HelloWorld.py NameError: name 'HelloWorld' is not defined `对不起,我有可读性有点问题。
    • @JiMeTehHak:不要在 cmets 中发布错误消息或代码。请更新您的问题,并提供您的回溯。
    猜你喜欢
    • 2011-09-21
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 2018-08-15
    • 2014-01-11
    相关资源
    最近更新 更多