栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python运行系统路径是有运行程序决定

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python运行系统路径是有运行程序决定

最近自己写了个flask小程序,具体路径如图

test01.py脚本

import  sys
print("test01系统路径:",sys.path)
from s1pro_flask.views import getname
f=getname.getmainame
f()

getname.py脚本

import  sys
print("getname.sys.path路径是:",sys.path)
from s1pro_flask.views.account import  *
def getmainame():
    print(__name__)

执行test01.py
运行结果

F:python3.6python.exe F:/pyprogram3/s1pro_flask/test01.py
test01系统路径: ['F:\pyprogram3\s1pro_flask', 'F:\pyprogram3', 'F:\python3.6\python36.zip', 'F:\python3.6\DLLs', 'F:\python3.6\lib', 'F:\python3.6', 'F:\python3.6\lib\site-packages']
getname.sys.path路径是: ['F:\pyprogram3\s1pro_flask', 'F:\pyprogram3', 'F:\python3.6\python36.zip', 'F:\python3.6\DLLs', 'F:\python3.6\lib', 'F:\python3.6', 'F:\python3.6\lib\site-packages']
s1pro_flask.views.getname

可以看出来getname模块的sys.path路径和test01.py路径相同
直接运行getname.py脚本结果是:

F:python3.6python.exe F:/pyprogram3/s1pro_flask/s1pro_flask/views/getname.py
getname.sys.path路径是: ['F:\pyprogram3\s1pro_flask\s1pro_flask\views', 'F:\pyprogram3', 'F:\python3.6\python36.zip', 'F:\python3.6\DLLs', 'F:\python3.6\lib', 'F:\python3.6', 'F:\python3.6\lib\site-packages']
Traceback (most recent call last):
  File "F:/pyprogram3/s1pro_flask/s1pro_flask/views/getname.py", line 4, in 
    from s1pro_flask.views.account import  *
ModuleNotFoundError: No module named 's1pro_flask.views'

路径和上面test01程序调用的路径不一致,还报错了识别不了s1pro_flask.views这个模块
对getname.py进行修改

import  sys
print("getname.sys.path路径是:",sys.path)
from account import  *
def getmainame():
    print(__name__)

F:python3.6python.exe F:/pyprogram3/s1pro_flask/s1pro_flask/views/getname.py
getname.sys.path路径是: ['F:\pyprogram3\s1pro_flask\s1pro_flask\views', 'F:\pyprogram3', 'F:\python3.6\python36.zip', 'F:\python3.6\DLLs', 'F:\python3.6\lib', 'F:\python3.6', 'F:\python3.6\lib\site-packages']

Process finished with exit code 0

顺利执行了程序
在修改getname.py脚本

import  sys
print("getname.sys.path路径是:",sys.path)
from .account import  *
def getmainame():
    print(__name__)

运行结果

F:python3.6python.exe F:/pyprogram3/s1pro_flask/s1pro_flask/views/getname.py
getname.sys.path路径是: ['F:\pyprogram3\s1pro_flask\s1pro_flask\views', 'F:\pyprogram3', 'F:\python3.6\python36.zip', 'F:\python3.6\DLLs', 'F:\python3.6\lib', 'F:\python3.6', 'F:\python3.6\lib\site-packages']
Traceback (most recent call last):
  File "F:/pyprogram3/s1pro_flask/s1pro_flask/views/getname.py", line 4, in 
    from .account import  *
ModuleNotFoundError: No module named '__main__.account'; '__main__' is not a package

Process finished with exit code 1

可以看出来如果程序运行的时候__name__==‘main’的时候这个程序默认就是最顶点了,相对路径已经不合适.出现’main’ is not a package …会出现
from …views import account
ValueError: attempted relative import beyond top-level package
但是调用test01.py再次执行可以顺利执行
调用test01.py执行的时候这两种写法都没得问题

import  sys
print("getname.sys.path路径是:",sys.path)
from .account import  *
def getmainame():
    print(__name__)
import  sys
print("getname.sys.path路径是:",sys.path)
from s1pro_flask.views.account import  *
def getmainame():
    print(__name__)

这两种写法均行

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947615.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号