λλ ν루 μ’ μΌ gitμμ νμ μ’ μμ±μ μ€μΉνλ λ°©λ²μ λν΄ μ½μμΌλ©° μ¬μ ν μ¬λ°λ₯Έ μ루μ μ μ°ΎκΈ° μν΄ κ³ κ΅°λΆν¬νκ³ μμ΅λλ€.
κΈ°μ‘΄ Python λΌμ΄λΈλ¬λ¦¬(PyPiμμ μ¬μ© κ°λ₯)λ₯Ό λΆκΈ°νκ³ μ
μ€νΈλ¦Όμ λ³ν©λμ§ μμ λͺ κ°μ§ λ³κ²½ μ¬νμ μΆκ°νμ΅λλ€.
λ΄ νλ‘μ νΈ μ€ μΌλΆλ λΌμ΄λΈλ¬λ¦¬ ν¬ν¬μ μμ‘΄ν©λλ€. μ΄μ μλ μμ© νλ‘κ·Έλ¨μ΄μκ³ Pipfileμ Gitμμ νΉμ λΆκΈ°/컀λ°μ μ€μΉνλλ‘ μ½κ² μ§μ ν μ μλ μμ© νλ‘κ·Έλ¨ μ’
μμ±μ κ΄λ¦¬νκΈ° μν΄ Pipenvλ₯Ό μ¬μ©νμ΅λλ€. λ΄ μμ© νλ‘κ·Έλ¨μ΄ μ±μ₯νμ¬ μ΄μ λΌμ΄λΈλ¬λ¦¬λ‘ λ³ν μ€μ
λλ€(PyPiμ κ²μλμ§ μμ). λΌμ΄λΈλ¬λ¦¬μ λν Gitμ νμ μ’
μμ± λ¬Έμ λ₯Ό ν΄κ²°ν΄μΌ ν©λλ€.
λλ μ΅μν λ€μ λ¬Έμ λ₯Ό μ½μμ΅λλ€. #3610, #4187, #2124, #5384 λ° κΈ°ν λ§μ λ¬Έμ μ λ¬Όλ‘ PEP. μ½κΈ°λ₯Ό λλμ λ λλ μ½κΈ° μμνμ λλ³΄λ€ λ νΌλμ€λ¬μ λ€.
pip 10μμ PEP-508μ ꡬννλ©΄μ μ΄ν΄ν λ°μ λ°λ₯΄λ©΄ λ€μμ μ¬μ©ν μ μμ΄μΌ ν©λλ€.
setup(
name='dmfigol',
...
install_requires=[
"requests",
'smartsheet-python-sdk @ git+ssh://[email protected]/dmfigol/smartsheet-python-sdk@dev#egg=smartsheet-python-sdk-1.3.3',
],
)
κ·Έλ¬λ μλνμ§ μμ΅λλ€.
-> % pip install git+https://<private-git>/dmfigol/my-test-project.git
Collecting git+https://<private-git>/dmfigol/my-test-project.git
...
Direct url requirement (like smartsheet-python-sdk@ git+ssh://[email protected]/dmfigol/smartsheet-python-sdk@dev#egg=smartsheet-python-sdk-1.3.3) are not allowed for dependencies
λ΄ μ§λ¬Έ:
1) λ΄κ° λκ°λ₯Ό μλͺ»νκ±°λ μ§μνμ§ μμ΅λκΉ?
2) μ§μνμ§ μλ κ²½μ° μ§μλ μμ μ
λκΉ?
3) setup.pyμμ λ μ μΈμ μΈ κ²μΌλ‘ λ§μ΄κ·Έλ μ΄μ
νλ €λ κ²½μ° pyproject.toml
μμλ μ μ¬ν ꡬ문μ μ¬μ©ν μ μλ€λ κ²μ μ¬λ°λ₯΄κ² μ΄ν΄νκ³ μμ΅λκΉ?
4)λ₯Ό μ¬μ©νλ νμ¬ μ¬μ©ν μμλ μ μΌν μ루μ
μ
λλ€ --process-dependency-links
λ° dependency_links
μΉμ
setup.py
?
5) μ
μ€νΈλ¦Όμ΄ PyPiμ λΌμ΄λΈλ¬λ¦¬λ₯Ό 1.3.4 μ΄μμΌλ‘ μ
λ°μ΄νΈνκ³ ν¬ν¬ λ²μ 1.3.3μ κ³μ μ¬μ©νκ³ μΆμ κ²½μ° μ΄λ»κ² λ©λκΉ?
κ°μ¬ν©λλ€
UPD: μ΄ μ€λ λλ₯Ό μ°μ°ν λ°κ²¬νλ©΄ #4187μ΄ κ΅¬νλ λκΉμ§ νμ¬ μλ μ€μΈ μ루μ :
setup(
...
install_requires=[
"smartsheet-python-sdk==10.1.3.3",
],
dependency_links=[
'https://github.com/dmfigol/smartsheet-python-sdk/archive/no-setuptools-scm.zip#egg=smartsheet-python-sdk-10.1.3.3'
],
...
λ΄κ° λκ° μλͺ»νκ±°λ μ§μλμ§ μμ΅λκΉ?
μ’ μμ±μΌλ‘μμ PEP 508 URL μꡬ μ¬νμ μ§μλμ§ μμ΅λλ€.
μ§μνμ§ μμΌλ©΄ μ§μλλμ?
μ. μλλ₯Ό μ°Έμ‘°νμμμ€.
setup.pyμμ λ μ μΈμ μΈ κ²μΌλ‘ λ§μ΄κ·Έλ μ΄μ νλ €λ κ²½μ° pyproject.tomlμμλ μ μ¬ν ꡬ문μ μ¬μ©ν μ μλ€λ κ²μ μ¬λ°λ₯΄κ² μ΄ν΄νκ³ μμ΅λκΉ?
pyproject.toml
λ λΉλ μκ° μ’
μμ±μ μ§μ νκ³ λꡬμ λν ꡬμ±μ κ°λ μ₯μλ‘λ§ μ¬μ©λ©λλ€. κ·Έ μ΄μΈμ λͺ¨λ κ²μ μ¬μ© μ€μΈ λꡬμ μν΄ κ΅¬νλ©λλ€.
νμ¬ setup.pyμμ --process-dependency-links λ° dependency_links μΉμ μ μ¬μ©ν μ μλ μ μΌν μ루μ μ λκΉ?
μ. μ΄κ²μ΄ #4187μ λκΈ°μ λλ€.
PyPIμμ μ€μΉλ ν¨ν€μ§λ‘ μΈν΄ pipκ° μμμ μΉ URLμ λλ¬νλ κ²μ μνμ§ μκΈ° λλ¬Έμ μ’
μμ±μμ PEP 508 URL μꡬ μ¬νμ μ¬μ©νλ κΈ°λ₯μ λΉνμ±ννμ΅λλ€. κΈ°λ³Έμ μΌλ‘ pip install spam
λ pipκ° PyPIλ₯Ό μ μΈν λ€λ₯Έ κ²μ λλ¬νλλ‘ ν΄μλ μ λ©λλ€.
#4187μμ νμ¬ μ μλ μ루μ μ ν¨ν€μ§κ° μ€μ λ‘ PyPIμμ μ§μ μ€μΉλ λλ§ URL μ’ μμ±μ μ°¨λ¨νλλ‘ μ°¨λ¨ μ‘°κ±΄μ μμ νμ¬ λ€λ₯Έ μ€μΉ λͺ¨λμμ PEP 508 URL μ’ μμ±μ μ¬μ©ν μ μλλ‘ νλ κ²μ λλ€.
μμΈν μ€λͺ κ°μ¬ν©λλ€, μ λ§ κ°μ¬ν©λλ€.
μ΄ μ€λ λλ λ«ν ν μ΅κ·Ό νλμ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ κ²Όμ΅λλ€. κ΄λ ¨ λ²κ·Έμ λν μ λ¬Έμ λ₯Ό μ¬μμμ€.
κ°μ₯ μ μ©ν λκΈ
μ’ μμ±μΌλ‘μμ PEP 508 URL μꡬ μ¬νμ μ§μλμ§ μμ΅λλ€.
μ. μλλ₯Ό μ°Έμ‘°νμμμ€.
pyproject.toml
λ λΉλ μκ° μ’ μμ±μ μ§μ νκ³ λꡬμ λν ꡬμ±μ κ°λ μ₯μλ‘λ§ μ¬μ©λ©λλ€. κ·Έ μ΄μΈμ λͺ¨λ κ²μ μ¬μ© μ€μΈ λꡬμ μν΄ κ΅¬νλ©λλ€.μ. μ΄κ²μ΄ #4187μ λκΈ°μ λλ€.
PyPIμμ μ€μΉλ ν¨ν€μ§λ‘ μΈν΄ pipκ° μμμ μΉ URLμ λλ¬νλ κ²μ μνμ§ μκΈ° λλ¬Έμ μ’ μμ±μμ PEP 508 URL μꡬ μ¬νμ μ¬μ©νλ κΈ°λ₯μ λΉνμ±ννμ΅λλ€. κΈ°λ³Έμ μΌλ‘
pip install spam
λ pipκ° PyPIλ₯Ό μ μΈν λ€λ₯Έ κ²μ λλ¬νλλ‘ ν΄μλ μ λ©λλ€.#4187μμ νμ¬ μ μλ μ루μ μ ν¨ν€μ§κ° μ€μ λ‘ PyPIμμ μ§μ μ€μΉλ λλ§ URL μ’ μμ±μ μ°¨λ¨νλλ‘ μ°¨λ¨ μ‘°κ±΄μ μμ νμ¬ λ€λ₯Έ μ€μΉ λͺ¨λμμ PEP 508 URL μ’ μμ±μ μ¬μ©ν μ μλλ‘ νλ κ²μ λλ€.