У меня есть скрипт Python (в качестве точки входа), библиотека Hy (просто добавьте два столбца) и файл входных данных:
$ cat add_cols/app.py
import hy
import sys
from mylib import add2col
def main():
inp = sys.argv[1]
out = sys.argv[2]
print(f'read file {inp}, and convert to file {out}')
add2col(inp, out)
if __name__ == '__main__':
main()
$ cat add_cols/mylib.hy
(import [pandas :as pd])
(defn add2col [inpfile outfile]
(setv inp (.read_csv pd inpfile))
(assoc inp "cola" (+ (get inp "cola") (get inp "colb")))
(.to_csv inp outfile :index False))
$ cat demo.csv
cola,colb
1,2
1,2
1,2
1,2
1,2
1,2
1,2
1,2
1,2
1,2
Я могу запустить его напрямую и получить результат:
$ cd add_cols
$ python app.py ../demo.csv res.csv
read file ../demo.csv, and convert to file res.csv
$ cat res.csv
cola,colb
3,2
3,2
3,2
...
Теперь я пытаюсь запустить его как zipapp :
$ python -m zipapp add_cols -m 'app:main'
$ python add_cols.pyz demo.csv res.csv
Traceback (most recent call last):
File "/home/leo/apps/miniconda3/envs/hylang/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/home/leo/apps/miniconda3/envs/hylang/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "add_cols_hy.pyz/__main__.py", line 2, in <module>
File "add_cols_hy.pyz/app.py", line 3, in <module>
ModuleNotFoundError: No module named 'mylib'
Почему mylib
не может быть загружен?
Как загрузить библиотеку Hy в zipapp?
Окружающая среда:
Python 3,6 в Анаконде
Ubuntu 16.04
Спасибо!