Ete*_*ner 31 python-module python-3.x
我在一个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__变量具有当前目录.我不知道如何解决这个问题.
Kev*_*vin 86
有两种方法可以运行Python 3脚本.
python fibo.py:参数是.py文件的名称.点是文件名的一部分.python -m fibo:参数是Python模块的名称,没有.py.圆点表示包装; fibo.py表示" py包中的模块fibo".对于像你这样的简单脚本,这是一个很小的区别.但是对于更大或更复杂的东西,它对import声明的行为有重要影响:
import搜索文件所在的.py目录(然后搜索其他各个地方,包括标准库;请参阅sys.path完整列表).import搜索当前目录(然后是其他各种地方).出于这个原因,在Python 3下,大多数涉及包的设置都需要第二种形式(而不仅仅是目录中的松散模块),因为脚本的父包可能无法在第一种形式下导入,这可能导致事情打破.
但对于像这样的简单脚本,任何一种形式都可以.
这是运行 python 3 脚本的两种不同方式:
python fibo.py:参数是.py文件的名称。
python -m fibo:参数是 Python 模块的名称,不带 .py
| 归档时间: | 
 | 
| 查看次数: | 21593 次 | 
| 最近记录: |