python如何实现跨目录引用?

目前文件结构如下

图片说明

需求:
需要在 apptest.py 中引用 \selenium\project1\login.py,那么 apptest.py 里的引用该怎么写?

目前尝试:

 import login.py as applogin # 引用本地的login.py
 import sys
 sys.path.append('..\\..\\..')
 from test.selenium.project1 import login.py as weblogin

在这种情况下运行 apptest.py 时,会报错 no module named 'func1',为何?

4个回答

 __init__.py 有没有

试试看绝对路径

你的问题贴乱了,是相对3层以上么?试试看
sys.path.append('..\\..\\..\\')
weixin_36394146
無憂炎武大帝 采纳为答案吧。不过后来我自己解决了,因为 sys.path.append() 之后,path的路径变了,也就是说这时候,需要在 web文件夹的 login.py 中也一样加入 sys.path.append 并把 fun1 的引用变成 test.selenium.project1.func1,就行了!
一年多之前 回复
weixin_36394146
無憂炎武大帝 试过了,其实你看我代码里面是用的 sys.path.append() 然后在涉及的每个文件夹下都有 __init__.py,但问题出在运行时,反而提示 no module named 'func1',这个就不知道为什么了。
一年多之前 回复

你sys.path.append以后有查看sys.path嘛? 可以把查看结果发一下看看吗?总觉得哪里怪怪的

导入login.py 语句改为

 from test.selenium.project1.login import *

试试

1、首先:import login.py (import 后面的模块不要带.py后缀)
2、导入模块时是有优先顺序的:
当导入模块时,Python解释器将按以下顺序搜索模块 -
当前目录。
如果没有找到该模块,Python会在shell变量PYTHONPATH中搜索每个目录。
如果其他所有失败,Python将检查默认路径。 在UNIX上,此默认路径通常是/usr/local/lib/python3/ 或者 /usr/sbin/模块搜索路径作为sys.path变量存储在系统模块sys中。sys.path变量包含当前目录PYTHONPATH和依赖于安装的默认值。
3、真不好意思我也试出来你那个用相对路径的方法,我用绝对路径试了可以,但是由于当前路径下有一个lojin.py,会优先导入当前的,所以我把它删了,建议改个文件名。
4、我的问题:为啥导入.py文件会执行一遍啊 0.0
-------------------正在学习python的一个菜鸟

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问