查找 'fibo.py' 的规范时出错(<class 'AttributeError'>:'module' 对象没有属性“__path__”)
Error while finding spec for 'fibo.py' (<class 'AttributeError'>: 'module' object has no attribute '__path__')
我在 fibo.py
文件中有一个模块,它具有以下功能 -
#fibonacci numbers module
def fib(n): # write Fibonacci series up to n
a, b = 0, 1
while b < n:
print(b, end=' ')
a, b = b, a+b
print()
def fib2(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
现在当我 运行 来自 cli python3 的模块时 -
> python3 -m fibo.py
我收到错误
Error while finding spec for 'fibo.py' (<class 'AttributeError'>:
'module' object has no attribute '__path__')
__path__
变量有当前目录。我不确定如何解决这个问题。
有两种方法可以 运行 一个 Python 3 脚本。
python fibo.py
:参数是.py
文件的名称。点是文件名的一部分。
python -m fibo
:参数是Python模块的名称,没有.py
。点表示包裹; fibo.py
表示 "the module py
in the package fibo
."
对于像您这样的简单脚本来说,这是一个小区别。但是对于更大或更复杂的东西,它对 import
语句的行为有重要影响:
- 第一种形式将导致
import
搜索 .py
文件所在的目录(然后搜索其他各种地方,包括标准库;完整列表请参见 sys.path
).
- 第二种形式将使
import
搜索当前目录(然后是其他各个地方)。
出于这个原因,在 Python 3 下,大多数涉及包的设置都需要第二种形式(而不仅仅是目录中的松散模块),因为脚本的父包可能无法导入在第一种形式下,这可能会导致事情破裂。
但对于像这样的简单脚本,任何一种形式都可以。
除了 Kevin 的回答:您应该将脚本文件夹的路径添加到 PYTHONPATH 环境变量,以使其在某些 OS.
上工作
这是 运行 python 3 脚本的两种不同方式:
python fibo.py:参数为.py文件名。
python -m fibo: 参数是一个Python模块的名称,没有.py
我在 fibo.py
文件中有一个模块,它具有以下功能 -
#fibonacci numbers module
def fib(n): # write Fibonacci series up to n
a, b = 0, 1
while b < n:
print(b, end=' ')
a, b = b, a+b
print()
def fib2(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
现在当我 运行 来自 cli python3 的模块时 -
> python3 -m fibo.py
我收到错误
Error while finding spec for 'fibo.py' (<class 'AttributeError'>:
'module' object has no attribute '__path__')
__path__
变量有当前目录。我不确定如何解决这个问题。
有两种方法可以 运行 一个 Python 3 脚本。
python fibo.py
:参数是.py
文件的名称。点是文件名的一部分。python -m fibo
:参数是Python模块的名称,没有.py
。点表示包裹;fibo.py
表示 "the modulepy
in the packagefibo
."
对于像您这样的简单脚本来说,这是一个小区别。但是对于更大或更复杂的东西,它对 import
语句的行为有重要影响:
- 第一种形式将导致
import
搜索.py
文件所在的目录(然后搜索其他各种地方,包括标准库;完整列表请参见sys.path
). - 第二种形式将使
import
搜索当前目录(然后是其他各个地方)。
出于这个原因,在 Python 3 下,大多数涉及包的设置都需要第二种形式(而不仅仅是目录中的松散模块),因为脚本的父包可能无法导入在第一种形式下,这可能会导致事情破裂。
但对于像这样的简单脚本,任何一种形式都可以。
除了 Kevin 的回答:您应该将脚本文件夹的路径添加到 PYTHONPATH 环境变量,以使其在某些 OS.
上工作这是 运行 python 3 脚本的两种不同方式:
python fibo.py:参数为.py文件名。
python -m fibo: 参数是一个Python模块的名称,没有.py