相关疑难解决方法(0)

python setup.py配置在自定义目录中安装文件

我想创建一个setup.py,它将我的文件安装到自定义目录中.我有一个特定的前缀,我希望得到以下结果:

/my/prefix/
  bin/
    script.sh
  libexec/
    one.py
    two.py
    ...
  lib/pythonX.Y/site-packages/
    package/...
Run Code Online (Sandbox Code Playgroud)

我的初始项目如下:

/
  script.sh
  one.py
  two.py
  ...
  setup.py
  package/...
    __init__.py
    ...
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?我希望能够稍后安装它,例如:

python setup.py install --prefix=/my/prefix
Run Code Online (Sandbox Code Playgroud)

我可以将"package"很好地安装在正确的目录中,因为lib/pythonX.Y/site-packages在--prefix下是默认位置.但有没有一种干净的方法将script.sh变成"bin"和其他python文件到"libexec"?我认为实现这一目标的唯一方法是在我的setup.py脚本中手动复制这些文件.可能有更清洁,更标准的方法吗?

(编辑)

我最终得到了setup.py:

setup(name='mylib',
  scripts=['script.sh'],
  data_files=[('libexec', ['one.py', 'two.py'])]
)
Run Code Online (Sandbox Code Playgroud)

当然,你可以迭代libexec的所有python文件,但我只需要2-3个python文件.

(EDIT2)

另外,我可以使用以下set.cfg:

[install]
prefix=/my/prefix
Run Code Online (Sandbox Code Playgroud)

而不是python setup.py install --prefix=/my/prefix我可以做:

python setup.py install
Run Code Online (Sandbox Code Playgroud)

python installation configuration setup.py

14
推荐指数
1
解决办法
2万
查看次数

ModuleNotFoundError:使用 sys.path.append() 时没有名为 Project 的模块

我正在尝试从父目录中的文件夹导入模型。我正在使用 sys.path.append()。我的项目结构:

-项目

  • 文件夹1
    • 文件1.py
    • ...
  • 文件夹2
    • 文件2.py
    • ...

在 file1.py 文件中:

sys.path.append('../Project')
from Project.folder2 import file2
Run Code Online (Sandbox Code Playgroud)

然后我得到:

ModuleNotFoundError: No module named Project
Run Code Online (Sandbox Code Playgroud)

我知道还有其他方法,但这似乎是最简单的。我不确定是否需要将绝对路径放入项目文件夹,但我希望不需要,因为我将在不同的计算机上运行该项目(差异绝对路径)。

python

5
推荐指数
1
解决办法
5334
查看次数

标签 统计

python ×2

configuration ×1

installation ×1

setup.py ×1