Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.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 从包运行脚本_Python - Fatal编程技术网

Python 从包运行脚本

Python 从包运行脚本,python,Python,我是来自java的python新手。我创建了一个名为“Project”的文件夹。在“Project”中,我创建了许多包(带有\uu init\uuuuuuuuupy.py文件),比如“test1”和“tests2”test1'包含一个python脚本文件.py,该文件使用来自“test2”的脚本(从test2导入模块)。我想从命令行在“test1”中运行脚本x.py。我该怎么做 编辑:如果你对我如何更好地组织我的文件有更好的建议,我将不胜感激。(注意我的java心态) 编辑:我需要从bash脚本

我是来自java的python新手。我创建了一个名为“Project”的文件夹。在“Project”中,我创建了许多包(带有
\uu init\uuuuuuuuupy.py
文件),比如“test1”和“tests2”test1'包含一个python脚本文件
.py
,该文件使用来自“test2”的脚本(从test2导入模块)。我想从命令行在“test1”中运行脚本
x.py
。我该怎么做

编辑:如果你对我如何更好地组织我的文件有更好的建议,我将不胜感激。(注意我的java心态)


编辑:我需要从bash脚本运行脚本,所以我需要提供完整的路径。

可能有几种方法可以实现您想要的

当我需要确保可执行脚本中的模块路径正确时,我要做的一件事是获取父目录并插入模块搜索路径(
sys.path
):


这样,您就可以安全地运行脚本,而不用担心脚本如何调用。

Python代码被组织到模块和包中。模块只是一个
.py
文件,可以包含类定义、函数定义和变量。包是包含
\uuuu init\uuuu.py
文件的目录

标准Python项目可能如下所示:

thingsproject/
  README
  setup.py
  doc/
     ...
  things/
    __init__.py
    animals.py
    vegetables.py
    minerals.py
  test/
    test_animals.py
    test_vegetables.py
    test_minerals.py
setup(
    name='thingsproject',
    ....
    entry_points = {
        'console_scripts': ['dog = things.animals:dog_main_function']
    },
    ...
)
setup.py文件描述了有关项目的元数据。请参阅,特别是关于的一节

帮助在Python中分发命令行工具。进入点在
setup.py
中定义如下:

thingsproject/
  README
  setup.py
  doc/
     ...
  things/
    __init__.py
    animals.py
    vegetables.py
    minerals.py
  test/
    test_animals.py
    test_vegetables.py
    test_minerals.py
setup(
    name='thingsproject',
    ....
    entry_points = {
        'console_scripts': ['dog = things.animals:dog_main_function']
    },
    ...
)
其效果是,当使用
python setup.py install安装包时,会根据您的操作系统在合理的位置自动创建一个脚本,例如
/usr/local/bin
。然后,脚本调用
things
包的
animals
模块中的
dog\u main_函数

另一个要考虑的Python约定是A。这表示一个目录或zip文件中的“main”脚本,其中包含完整的python代码。这是使用命令行参数解析器为代码定义命令行接口的好地方


在中可以找到有关Python打包的混乱世界的最新信息。

如果我正确理解了您的问题,只需授予您的脚本执行权限(
/x.py
在*NIX系统中)或键入
Python x.py