Как импортировать локальный пакет с Python на Windows?
Я хотел бы использовать mako-render
из пакета мако.
Рассмотрим эти 3 файла:
D: \ test.pyfrom module import foo
print(foo())
D: \ test.txt<%! from module import foo %>
${foo()}
D: \ Test\module.pydef 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
файлы.