Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导入本地包而不修改sys.path_Python_Package - Fatal编程技术网

Python 导入本地包而不修改sys.path

Python 导入本地包而不修改sys.path,python,package,Python,Package,以下是我的目录设置: mydir ├── folder └── subfolder └── script1.py └── shared ├── otherstuff ├── script2.py └── pkg ├── box.py └── __init__.py script2.py以 import pkg 而且效果很好。当我在script1.py中包含同一行时,我得到: Traceback (most re

以下是我的目录设置:

mydir
├── folder
    └── subfolder
        └── script1.py
└── shared
    ├── otherstuff
    ├── script2.py
    └── pkg
        ├── box.py
        └── __init__.py
script2.py

import pkg 
而且效果很好。当我在
script1.py
中包含同一行时,我得到:

Traceback (most recent call last):
  File "script1.py", line 1, in <module>
    import pkg
ImportError: No module named 'pkg'
回溯(最近一次呼叫最后一次):
文件“script1.py”,第1行,在
进口包装
ImportError:没有名为“pkg”的模块
有没有什么好方法可以让语法在
script1.py
中如此简单地工作?我目前使用的是
sys.path.insert(0,os.path.abspath('./shared'))
之前的
import pkg
(我从
mydir
调用
script1
),但这不便于重复使用,而且很笨重,一般来说修改
sys.path
可能是个坏主意

我错过了什么?将
pkg
导入
script1.py
的最佳方法是什么

注意:我昨天问过,但我没有意识到上面的答案对dir结构不起作用,这正是我真正需要的。哎呀

Python3.x,顺便说一句。

试试这个

sys.path.append('./../../shared/')
严格限制:只有将其插入
script1.py
中,并且
script1.py
仍在
mydir/文件夹/子文件夹中时,这才有效

另外,据我所知,在这种情况下,修改sys.path几乎是你必须做的事情,所以不要为此感到难过