Как импортировать локальный пакет с Python на Windows?

Я хотел бы использовать mako-render из пакета мако.

Рассмотрим эти 3 файла:

D: \ test.py
from module import foo
print(foo())
D: \ test.txt
<%! from module import foo %>
${foo()}
D: \ Test\module.py
def foo():
    return 42

Если я хочу выполнить foo.py Мне нужно добавить D:\test в PYTHONPATH:

d:\>C:\ProgramData\Anaconda3\python.exe test.py
Traceback (most recent call last):
  File "test.py", line 1, in <module>
    from module import foo
ModuleNotFoundError: No module named 'module'

d:\>set PYTHONPATH=D:\test;%PYTHONPATH%

d:\>C:\ProgramData\Anaconda3\python.exe test.py
42

Однако с mako-render, В системах POSIX mako-render это просто скрипт, который вызывает Python под капотом. На Windows это исполняемый файл mako-render.exe, Так что, если я делаю то же самое, это не работает:

d:\>C:\ProgramData\Anaconda3\Scripts\mako-render.exe test.txt

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\Mako-1.0.7-py3.6.egg\mako\cmd.py", line 55, in cmdline
    template = Template(filename=filename, lookup=lookup)
  File "C:\ProgramData\Anaconda3\lib\site-packages\Mako-1.0.7-py3.6.egg\mako\template.py", line 338, in __init__
    module = self._compile_from_file(path, filename)
  File "C:\ProgramData\Anaconda3\lib\site-packages\Mako-1.0.7-py3.6.egg\mako\template.py", line 416, in _compile_from_file
    filename)
  File "C:\ProgramData\Anaconda3\lib\site-packages\Mako-1.0.7-py3.6.egg\mako\template.py", line 714, in _compile_text
    exec(code, module.__dict__, module.__dict__)
  File "test_txt", line 16, in <module>

ImportError: cannot import name 'foo'

Как это работает в Windows?

Если я копирую из Linux mako-render в D:\my-mako-render, Я могу сделать:

d:\>C:\ProgramData\Anaconda3\python.exe -m my-mako-render test.txt
42

42

Таким образом, проблема появляется с .exe файлы.

0 ответов

Другие вопросы по тегам