【问题标题】:Running pipenv environment via $PATH symlink to executable .py file通过 $PATH 符号链接运行 pipenv 环境到可执行的 .py 文件
【发布时间】:2019-01-28 22:51:21
【问题描述】:

我有一个我在本地使用的 Python 应用程序,需要通过 pipenv run python3 appname.py 启动它才能加载具有已安装依赖项的虚拟环境。这一切都在 macOS 上。

我想要实现的是能够在任何地方使用$ appname [args] 运行这个应用程序。

所以我做的是:

  • #!/usr/bin/env pipenv run python3添加到appname.py
  • 使用chmod +x appname.py 使该文件可执行;
  • ln -s /path/to/appname.py ~/.bin/appname创建符号链接;
  • ~/.bin放在我的$PATH上。

现在,当我启动 $ appname 时,pipenv~/.bin 文件夹中创建了一个新的虚拟环境并抱怨缺少依赖项,而不是跟随脚本的实际位置。

有没有办法克服这个问题?或者也许是实现我想要的更好的方法?

【问题讨论】:

  • 请注意,#!/usr/bin/env pipenv run python3 将运行 env "pipenv run python3",这意味着这些参数将通过单个字符串传递给 /usr/bin/env。您只能在 shebang 行中使用 单个 参数

标签: python symlink shebang pipenv


【解决方案1】:

出于我的目的,更明智的做法是通过将代码(连同所有依赖项)打包成带有pyinstaller 的可执行文件来冻结我的代码。

我所做的是:

  1. pyinstaller 安装为devpipenv install --dev pyinstaller 的依赖关系;
  2. 在项目目录中启动pipenv shell
  3. pyinstaller --onefile appname.py打包应用;
  4. 将生成的自包含 [project path]/dist/appname 可执行文件移动到我的 ~/.bin 目录中。

有一些不相关的问题需要克服,但对我来说效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    相关资源
    最近更新 更多