在其他Python脚本中使用一个Python脚本中的变量?


9

我想设置一个包含变量的python文件,该变量具有我所有数据源的位置。然后,我所有其他脚本都将使用它,然后随着数据源的更改,我只需要编辑一个文件。

我的Data_sources.py看起来像这样:

BC_BEC = "Database Connections\\BC.sde\\FOREST_BC.BC_Eco\\BC.BC_BEC"
BC_TFL = "Database Connections\\Forest_BC.sde\\BC.BC_Admin\\BC.TFL_Boundary"

等等...

如何获取所有其他脚本以加载或访问Data_sources.py中的这些变量?


诸如此类的问题,纯粹是Python,而不是关于GIS的Python模块或站点包,通常应在Stack Overflow上进行研究/询问。
PolyGeo

Answers:


10

您可以使用Distutils对其进行打包,从而创建一个可从运行的每个Python脚本导入的已安装Python模块。

从Python文档中:

如果您要做的只是分发文件foo.py中包含的名为foo的模块,那么您的安装脚本可以像这样简单:

from distutils.core import setup
setup(name='foo',
      version='1.0',
      py_modules=['foo'],
      )

然后,您可以通过安装它

python.exe setup.py install

然后您可以从任何Python脚本导入foo,也可以使用

python.exe setup.py bdist_wininst

为该模块创建Windows安装程序,以便可以将其分发到其他计算机。


“ Python字节”一书中有一章很好的一章,显示了使用ang导入模块进行构建的示例。
jonatr 2011年

我喜欢创建模块的建议,但是我对它们不是很了解。命令“ python.exe setup.py install”将使用指向foo.py的指针,还是使用foo.py中的当前指针?如果以后更改foo.py,该模块将仍然是当前模块?谢谢。
用户错误

我也会去找那本书。感谢Jason和jonatr的帮助。
用户错误

词汇校正:更精确的python单词是“ package”(包装)-有助于查找文档,并且要清楚,package和modules是python世界中的两个不同事物。另外,还有一个建议/提示:如果您这样做setup.py develop(而不是install),则对软件包的编辑将在保存后立即被取用,而无需重新安装。(这可能适合原始提问者的data_sources.py。)
Dan S.

3
用户不只是问如何导入吗?回答以下。
傻傻的


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.