sys.path.append,如何在无法修改模块时解析名称冲突

时间:2016-09-21 15:14:29

标签: python django pythonpath

我正在尝试将PYTHONPATH两个Django模块(1.4版)的位置附加到我的ORM模型上。这是代码:

sys.path.append('/path/project1')
sys.path.append('/path/project2')

当我尝试按如下方式设置Django环境时:

import settings 
setup_environ(settings)

仅加载project1的设置。我认为问题是两个模型分别包含一个名为settings.py的文件,因此,名称冲突。我无法修改模块。

如何将两个模块设置添加到Django Enviroment?

1 个答案:

答案 0 :(得分:2)

注意:

我取消删除此答案以供将来参考。下面的解决方案允许从具有相同名称的文件导入两个不同的模式,但不允许在一个解释器中运行两个Django项目(请参阅this commentthis comment)。

解决方案#1

您可以尝试将项目转换为python包 1.将空__init__.py添加到/ path / project1 /和/ path / project2 /
2.

sys.path.append('/path/')
sys.path.append('/path/project1/')
sys.path.append('/path/project2/')

import project1.settings
import project2.settings 
setup_environ(project1.settings)
setup_environ(project2.settings)

解决方案#2

1)在/ path /中创建一个目录,其中包含指向设置文件的符号链接

cd /path/
mkdir setting_links
cd setting_links
ln ../project1/settings.py settings_1.py
ln ../project2/settings.py settings_2.py

2)将项目和目录放在sys.path

sys.path.append('/path/setting_links/')
sys.path.append('/path/project1/')
sys.path.append('/path/project2/')

import settings_1
import settings_2
setup_environ(settings_1)
setup_environ(settings_2)