为什么Python从我自己的目录运行时无法运行程序?

时间:2014-06-27 10:08:49

标签: python python-2.7

这不起作用:

numbers是一个目录:

$ cat numbers.py
import networkx as nx


~/numbers $ python2.7 < numbers.py

这给了我一些错误,结果如下:

'module' object has no attribute 'Number'

这是有效的:

~ $ python2.7 < numbers/numbers.py

我按照以下说明安装了networkx:http://networkx.github.io/documentation/latest/install.html

Download the source (tar.gz or zip file) from https://pypi.python.org/pypi/networkx/ or get the latest development version from https://github.com/networkx/networkx/
Unpack and change directory to the source directory (it should have the files README.txt and setup.py).
Run python setup.py install to build and install
(Optional) Run nosetests to execute the tests if you have nose installed.

测试运行正常,但我不明白为什么这个简单的程序只包含&#34;将networkx作为nx&#34;不会跑。

这两种情况有什么区别?

1 个答案:

答案 0 :(得分:4)

您在STDIN上传递脚本,而不是在命令行上传递,因此Python将当前工作目录添加到sys.path而不是numbers

通常,Python会将脚本目录添加为sys.path中的第一个元素:

  

在程序启动时初始化时,此列表的第一项path[0]是包含用于调用Python解释器的脚本的目录。如果脚本目录不可用(例如,如果以交互方式调用解释器或者从标准输入读取脚本),则路径[0]为空字符串,指示Python首先搜索当前目录中的模块。

如果您遇到导入问题,则听起来好像导入了错误的模块;也许你正在使用一个同名的stdlib模块进行屏蔽,位于numbers。重命名该模块。