给定一个简单的孵化项目,从项目文件夹外部运行它的干净方法是什么?
更具体地说,假设我的项目
myproject
的根源在于/home/me/projects/myproject/
,pyproject.toml
和其他文件都位于其中。 pyproject.toml
文件包含一个可运行的脚本,如下所示。
[project.scripts]
myrunnable = "myproject.main:main"
假设我在我的用户文件夹中,
/home/me/
并且想要运行myrunnable
。我可以先做cd "/home/me/projects/myproject/"
然后hatch run myrunnable
。但我发现在运行之前必须显式切换到项目文件夹,这很不优雅。如果可能的话,我更愿意输入类似 hatch --projectdir "/home/me/projects/myproject/" run myrunnable
的内容。
我知道我可以做pushd "/home/me/projects/myproject/"; hatch run myrunnable; popd
(我目前使用的),但是有没有更正式和优雅的方法?
我已经尝试过
hatch --config "/home/me/projects/myproject/pyproject.toml" run myrunnable
但失败了,因为它尝试使用我当前所在位置(myrunnable
)的工作目录运行 /home/me/
,而 myrunnable
期望在项目根目录中运行。
(这个问题可能相关。)
我有一个类似的问题,我想使用 Makefile 并调用孵化而不需要 cd 到包中。
--config
参数并不是针对pyproject.toml
,而是针对config.toml
。您分享的问题参考其文档。
这是我的设置方法:
.
├── config.toml
├── Makefile
└── projects
└── my_project
└── pyproject.toml
config.toml
的内容:mode = "project" # Operate in project mode
project = "my_project" # One of the specified projects
[projects]
my_project = "projects/my_project" # Path to the project
hatch --config config.toml env show
# or
# export HATCH_CONFIG:=path/to/config.toml
注意:对于我的用例,我不需要完整路径,但您也可以在
config.toml
中这样做,在这种情况下,从哪里调用它并不重要。