https://github.com/Kozea/WeasyPrint/issues/133 μ°Έμ‘°
λ¬΄μ¨ μΌμ΄ μΌμ΄λκ³ μλμ§ :
python -m weasyprint.navigator
μ€ν[sys.executable] + sys.argv
μ ['β¦/python', 'β¦/weasyprint/navigator.py']
-m
κ° μμΌλ―λ‘ Pythonμ .py νμΌμ λΆλͺ¨ λλ ν°λ¦¬λ₯Ό sys.path
html.entities
κ°μ Έ μ€κΈ°λ₯Ό μλν©λλ€.weasyprint/html.py
μλͺ» κ°μ Έμ΅λλ€.μ¬κΈ° μ무λ λΆλͺ
ν μλͺ»λ μΌμνμ§ μμ΅λλ€. μ΄ μν©μ μ΄λ»κ² μ²λ¦¬ ν κ²μ μ μν©λκΉ? β¦/weasyprint/navigator.py
(λλΆλΆ python -m
μ ν¨κ» μ¬μ©λ κ²μΌλ‘ μμ λ¨)κ°μλ κ²½μ° sys.path
μμ μμ λλ ν 리λ₯Ό μ κ±°νλλ‘νλ κ²μ λν΄ μ΄λ»κ² μκ°νμλκΉ?
Werkzeugκ° Python 2μμ __loader__.fullname
νκ³ Python 3μμ __loader__.name
μ‘΄μ¬νλ κ²½μ°)λ₯Ό μ¬μ©νμ¬ μ€μ λ‘ λμΌν μΈμλ‘ νμ νλ‘μΈμ€λ₯Ό μμ±ν΄λ λ¬Έμ κ°λμ§ μμ κ²μ΄λΌκ³ μκ°ν©λλ€.
@untitaker , λ¬΄μ¨ λ§μΈμ§ μ΄ν΄κ° μ λΌμ. __loader__
무μμ
λκΉ?
python -m somemodule
μ¬μ© μ¬λΆλ₯Ό Pythonμμ κ°μ§ ν μ μμ΅λκΉ?
νμ¬ λͺ¨λ μ΄λ¦μ μ»λ λ°©λ²μ μ€λͺ
νλ StackOverflow λ΅λ³ μ λ°κ²¬ __loader__.fullname
λ₯Ό μ¬μ©ν μ μμμ 보μ¬μ€λλ€.
print(__loader__.fullname)
Python νμΌμ΄ -m
μμ΄ μ€νλλ κ²½μ° __loader__
μ μμ μ‘΄μ¬νμ§ μμΌλ©° κ°μ Έμ¨ λͺ¨λμλ μ‘΄μ¬νμ§ μμ΅λλ€.
Python 3μμ -m
μ€ν λ λͺ¨λκ³Ό λ€λ₯Έ κ°μ Έμ¨ λͺ¨λ λͺ¨λμ __loader__
μ μμ΄μλ κ²μ²λΌ 보μ΄μ§λ§ fullname
μμ±μ μ΄μ name
μ
λλ€. κ·Έλ¬λ λͺ¨λ λͺ¨λ λ΄μμ name
μμ±μλ _current_ λͺ¨λμ κ°μ΄ μμ΅λλ€.
λ°λΌμ Python 2μμλ -m
μ€ν μ€μΈμ§ κ°μ§ ν μ μμ§λ§ 3μμλ μ€ννμ§ μμ΅λλ€.
λν νμ§λ λ§€μ° μ νμ μ΄λ―λ‘ python -m
__loader__
λ³μλ₯Ό νμΈνμ¬ python -m
κ° μ¬μ© λ κ²½μ° μ§μ μ€ν λ λͺ¨λ λ΄λΆμμλ§ νμ§ ν μ μμ΅λλ€. λν,μ΄ λμμ κ±°μ λ¬Έμνλμ§ μμ κ²μ²λΌ 보μ΄λ―λ‘ μ΄μ¨λ Werkzeugμμ κ·Έκ²μ΄ μ°λ¦¬κ° μνλ κ²μΈμ§ νμ€νμ§ μμ΅λλ€.
μ΄ λ²κ·Έλ₯Ό μ§μ λ°κ²¬νμ΅λλ€. -m
νλκ·Έκ° sys.argv
μμ κ²μΌλ‘ μμνμ§λ§ νμ€ν κ·Έλ μ§ μμ΅λλ€.
μ΄μ λν ν΄κ²° λ°©λ²μ΄ μμ΅λκΉ?
μ, https://github.com/mitsuhiko/flask/issues/1246 μ
2015 λ 7 μ 9 μΌ 15:08:30 CESTμ Wayne Werner [email protected] μ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
μ΄ λ²κ·Έλ₯Ό μ§μ λ°κ²¬νμ΅λλ€. λλ
-m
νλκ·Έκ°
sys.argv
μ μμ§λ§ νμ€ν κ·Έλ μ§ μμ΅λλ€.μ΄μ λν ν΄κ²° λ°©λ²μ΄ μμ΅λκΉ?
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ GitHubμμ νμΈνμΈμ.
https://github.com/mitsuhiko/werkzeug/issues/461#issuecomment -119955695
λ΄ Android κΈ°κΈ°μμ K-9 Mailμ μ¬μ©νμ¬ λ³΄λμ΅λλ€. κ°κ²°ν¨μ μ©μν΄μ£Όμμμ€.
리 λ‘λκ° λͺ¨λμ λΉ ν¨ν€μ§λ‘ μ€ννκΈ° λλ¬Έμ μλ κ°μ Έ μ€κΈ°κ° μ€ν¨νλ λΉμ·ν λ¬Έμ κ° μμ΅λλ€.
$ python -m myapp.entrypoints.website
* Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
* Restarting with stat
Traceback (most recent call last):
File "/tmp/myapp/entrypoints/website.py", line 9, in <module>
from . import mymodule
ValueError: Attempted relative import in non-package
@untitaker μ μ£Όμμ μ¬μ©νμ¬ Python <3.3μμ python -m
μ¬μ© μ¬λΆλ₯Ό κ°μ§νκ³ ( κ·Έλλ§ __loader__
μ μ λ¨) sys.argv
μ¬μ€μ νμ¬ λ¦¬ λ‘λλ μ¬μ©νλλ‘ κ°μ ν μ μμ΅λλ€
try:
sys.argv = ['-m', __loader__.fullname] + sys.argv[1:]
except NameError:
pass
κ·Έλ¬λ μ΄κ²μ κ½€ ν΄ν€ ν ν΄κ²° λ°©λ²μ λλ€ (κ·Έλ¦¬κ³ Python <3.3μμλ§).
# 531μ νμ¬ κ΅¬νμμ΄ νΉμ λ¬Έμ λ₯Ό ν΄κ²°νμ§ λͺ»νλ©° μνκΉκ²λ μ΄λ»κ² ν μ μλμ§ μ μ μμ΅λλ€.
ν λ²μ λ‘λ λ‘ κ³ μ³ λ³΄λ €κ³ νλλ° ν¬κ² 보 μλλ°
2μμ 3κΉμ§ λ€λ₯Έ νλ.
2015 λ 9 μ 10 μΌ λͺ©μμΌ 01:26:56 PM -0700μ Martijn Vermaatλ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
리 λ‘λκ° λͺ¨λμ λΉ ν¨ν€μ§λ‘ μ€ννκΈ° λλ¬Έμ μλ κ°μ Έ μ€κΈ°κ° μ€ν¨νλ λΉμ·ν λ¬Έμ κ° μμ΅λλ€.
$ python -m myapp.entrypoints.website * Running on http://127.0.0.1:5000 (Press CTRL+C to quit) * Restarting with stat Traceback (most recent call last): File "/tmp/myapp/entrypoints/website.py", line 9, in <module> from . import mymodule ValueError: Attempted relative import in non-package
@untitaker μ μ£Όμμ μ¬μ©νμ¬ Python <3.3μμ
python -m
μ¬μ© μ¬λΆλ₯Ό κ°μ§νκ³ ( κ·Έλλ§__loader__
μ μ λ¨)sys.argv
μ¬μ€μ νμ¬ λ¦¬ λ‘λλ μ¬μ©νλλ‘ κ°μ ν μ μμ΅λλ€try: sys.argv = ['-m', __loader__.fullname] + sys.argv[1:] except NameError: pass
κ·Έλ¬λ μ΄κ²μ κ½€ ν΄ν€ ν ν΄κ²° λ°©λ²μ λλ€ (κ·Έλ¦¬κ³ Python <3.3μμλ§).
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ GitHubμμ νμΈνμΈμ.
https://github.com/mitsuhiko/werkzeug/issues/461#issuecomment -139369694
μ¬νκ²λ
$ python -m werkzeug.serving weasyprint. navigator : app --reload --debug
μ΄ νμ΄μ¬ λ²κ·Έλ νμ΄μ¬μΌλ‘ μ λλ‘ κ³ μΉ μ μμΌλ―λ‘ μ½μ μ€ν¬λ¦½νΈλ₯Ό μ 곡νλ κ²μ΄ μ’μ΅λλ€.
μ΄κ²μ λ³νκ° μμ΅λκΉ? λ°©κΈμ΄ λ¬Έμ κ° λ°μνμ΅λλ€ ... (Python 3.6, weasyprint μμ, python -m werkzeug.serving app:application
)
λ€μκ³Ό κ°μ μμ μ μννμ¬ λ¬Έμ λ₯Ό ν΄κ²°ν μμμμ΅λλ€.
PYTHONPATH=$PWD:$PYTHONPATH python -m myapp.entrypoints.website
_ νΈμ§ : ν΄κ²°μ± μ΄ λ°λ‘ μμ μμμ κΉ¨λ¬μμ΅λλ€. : arrow_up : _
κ°μ₯ μ μ©ν λκΈ
리 λ‘λκ° λͺ¨λμ λΉ ν¨ν€μ§λ‘ μ€ννκΈ° λλ¬Έμ μλ κ°μ Έ μ€κΈ°κ° μ€ν¨νλ λΉμ·ν λ¬Έμ κ° μμ΅λλ€.
@untitaker μ μ£Όμμ μ¬μ©νμ¬ Python <3.3μμ
python -m
μ¬μ© μ¬λΆλ₯Ό κ°μ§νκ³ ( κ·Έλλ§__loader__
μ μ λ¨)sys.argv
μ¬μ€μ νμ¬ λ¦¬ λ‘λλ μ¬μ©νλλ‘ κ°μ ν μ μμ΅λλ€κ·Έλ¬λ μ΄κ²μ κ½€ ν΄ν€ ν ν΄κ²° λ°©λ²μ λλ€ (κ·Έλ¦¬κ³ Python <3.3μμλ§).
# 531μ νμ¬ κ΅¬νμμ΄ νΉμ λ¬Έμ λ₯Ό ν΄κ²°νμ§ λͺ»νλ©° μνκΉκ²λ μ΄λ»κ² ν μ μλμ§ μ μ μμ΅λλ€.