使用 environ 模块添加系统路径
Adding a path to the system using environ module
在设置文件中,我将路径附加到系统硬编码 url,如下所示:
sys.path.append('/home/user/path/to/projectdir')
有效。
一旦我想让它成为相对的,即使我用 environ 模块检索确切的路径,它也会失败。
import environ
ROOT_DIR = environ.Path(__file__) - 3
sys.path.append(ROOT_DIR.path())
对我来说不可思议的是 print(ROOT_DIR.path())
输出 project_dir 的 url。
print(ROOT_DIR.path())
> '/home/user/path/to/projectdir'
这是我的项目树。
project_dir
└── soloscrap
└── soloscrap
├── settings.py
那我怎么添加这个路径呢?是不是很奇怪?
我想 environ
来得太晚了,路径已经确定了。所以解决方案似乎是这样的:
SYSPATH = os.path.dirname(
os.path.dirname(
os.path.dirname(
os.path.abspath(__file__)
)
)
)
sys.path.append(SYSPATH)
这不优雅。
如果你想获取相对路径如何:
os.path.join("..", "..", __file__)
(终端略有不同)
In [1]: import os
In [3]: os.getcwd()
Out[3]: 'c:\Temp\foo\bar'
In [4]: os.path.abspath(os.path.join('..','..',__name__))
Out[4]: 'c:\Temp\__main__'
In [5]:
在设置文件中,我将路径附加到系统硬编码 url,如下所示:
sys.path.append('/home/user/path/to/projectdir')
有效。
一旦我想让它成为相对的,即使我用 environ 模块检索确切的路径,它也会失败。
import environ
ROOT_DIR = environ.Path(__file__) - 3
sys.path.append(ROOT_DIR.path())
对我来说不可思议的是 print(ROOT_DIR.path())
输出 project_dir 的 url。
print(ROOT_DIR.path())
> '/home/user/path/to/projectdir'
这是我的项目树。
project_dir
└── soloscrap
└── soloscrap
├── settings.py
那我怎么添加这个路径呢?是不是很奇怪?
我想 environ
来得太晚了,路径已经确定了。所以解决方案似乎是这样的:
SYSPATH = os.path.dirname(
os.path.dirname(
os.path.dirname(
os.path.abspath(__file__)
)
)
)
sys.path.append(SYSPATH)
这不优雅。
如果你想获取相对路径如何:
os.path.join("..", "..", __file__)
(终端略有不同)
In [1]: import os
In [3]: os.getcwd()
Out[3]: 'c:\Temp\foo\bar'
In [4]: os.path.abspath(os.path.join('..','..',__name__))
Out[4]: 'c:\Temp\__main__'
In [5]: