Я пытаюсь построить колесо python, используя setuptools
. Пакет должен включать два файла:
mymodule.py
- модуль python в том же каталоге, что и setup.py
myjar.jar
- java .jar файл, который существует вне моего каталога пакетов
Я создаю свой пакет, используя python3 setup.py bdist_wheel
.
Если я позвоню setup()
вот так:
setup(
name="mypkg",
py_modules=["mymodule"],
data_files=[('jars', ['../target/scala-2.11/myjar.jar'])]
)
тогда myjar.jar
успешно включается в .whl (пока хорошо), однако, когда я pip install mypkg
он помещает банку в /usr/local/myjar.jar
( этот вроде как объясняет, почему), что не то, что я вообще хочу, я хочу, чтобы он существовал там же, где и mymodule.py
, т.е. /usr/local/lib/python3.7/site-packages/
Если я изменю setup.py
на
setup(
name="mypkg",
py_modules=["mymodule"],
package_data={'jars': '../target/scala-2.11/myjar.jar'}
)
или
setup(
name="mypkg",
py_modules=["mymodule"],
package_data={'jars': ['../target/scala-2.11/myjar.jar']}
)
, тогда myjar.jar
просто не включается в .whl. Я попытался скопировать myjar.jar
в тот же каталог и изменить setup.py
на:
setup(
name="mypkg",
py_modules=["mymodule"],
package_data={'jars': 'myjar.jar'}
)
или
setup(
name="mypkg",
py_modules=["mymodule"],
package_data={'jars': ['myjar.jar']}
)
, но все же myjar.jar
не включается в .whl.
Я часами рвал себе волосы, вот почему я здесь.
Я прочитал множество сообщений SO по этому поводу:
которые предлагают различные комбинации data_files
, package_data
, include_package_data=True
и / или использование файла Manifest.in
, но все же я не могу заставить это работать так, как хотелось бы, поэтому я здесь надеюсь, что кто-то может посоветовать что я делаю не так.