programing

내 시스템에 너무 많은 Python 버전이있어 문제를 일으킴

projobs 2021. 1. 16. 09:13
반응형

내 시스템에 너무 많은 Python 버전이있어 문제를 일으킴


지난 몇 년 동안 저는 다양한 Python 버전으로 많은 Python 라이브러리를 설치했습니다. 즉시 작업 할 수 있도록 제어없이 맹목적으로 설치했습니다. 현재 그들은 numpy, scipy 및 matplotlib를 호출하는 pynest 를 설치하려고 할 때 문제를 일으키고 있습니다 . 어려움을 겪은 후에 Python과 라이브러리를 정리하고 다시 설치할 것입니다.

조사 후, 내 시스템에서 Python 2.5 / 2.6 / 2.7 / 3.2를 발견했으며 각각의 복사본 또는 기타 항목이 다음 위치에 있습니다. (my OS == Mac OS X 10.7.5 Lion )

  • /Library/Frameworks/
  • /opt/local/Library/Frameworks/
  • /opt/local/bin/
  • /Applications/
  • /usr/local/bin/
  • /usr/bin/
  • /System/Library/Frameworks/

나는 이것들을 가지고 있다는 것을 알고 있습니다. 이제의 항목을 제외한 모든 항목을 제거했습니다 /System/Libarary/Frameworks( 에서는 항목을 제거하지 않습니다 /System/Library/). 깨끗한 작업 후, which python지금 제공 /usr/bin/python에 연결한다 /System/Library/Frameworks.

자, 파이썬을 다시 설치하는 것이 명확한 환경입니까? 다른 버전이 존재하지 않는지 다시 확인하는 방법은 무엇입니까? 라이브러리와 라이브러리가 어디에나 있지 않고 다시 많은 사본을 가지지 않도록하려면 어떻게 다시 설치해야합니까?

깨끗한 Python 2.7을 적절한 위치에 설치하고 내 시스템이 정확히 어디에 있는지 확인하고 다른 곳에 라이브러리를 설치하지 않으려 고합니다. 전문적인 방식으로 관리하는 방법에 대한 조언을 부탁드립니다.

귀하의 정보를 위해 여기에 내 현재가 $PATH있습니다. 수정해야한다고 생각합니다.

/opt/local/bin:/opt/local/sbin:/opt/nest/lib/python2.7/site-packages:/usr/local/lib/python2.7/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/django/bin:/usr/X11/bin:/opt/local/bin:/opt/local/sbin:/usr/local/lib/python2.7/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin

더 많은 정보가 필요하면 알려주세요. 감사합니다!


업데이트 :

나는 그것이 왜 그렇게 미치게되는지 몹시 다시 생각하고있다. 다음을 통해 설치했기 때문이라고 생각합니다.

  • easy_install/ macports/ homebrew/ fink/ pip때때로;
  • .dmg 때때로;
  • .pkg 때때로;
  • 때때로 소스 코드를 컴파일하십시오.

그리고 그들은 다른 위치에서 물건을 만들었습니다. 이러한 방식의 메커니즘은 무엇일까요? 타겟 위치를 어떻게 선택합니까? 그들이 일을 엉망으로 만드는 것을 방지하는 방법?


왜 엉망이 되었습니까?

OP의 업데이트에 따르면 Python을 설치하는 몇 가지 다른 방법이 있으며 다른 위치에서 파일을 찾습니다. 예를 들어, macports물건을 /opt/local/homebrew넣는 동안에 물건을 넣습니다 /usr/local/. 또한 Mac OS X에는 몇 가지 Python 버전이 있습니다. 따라서 다른 방법으로 python을 여러 번 설치하면 시스템에 독립적 으로 존재하는 많은 python 버전얻을 수 있습니다.

어떤 문제가 발생합니까?

나는 정확히 모른다. 문제는 파이썬 버전이 많은 경우 사용할 버전과 패키지를 찾을 위치가 시스템 PATHPYTHONPATH각각 의 경로 순서에 따라 결정된다는 것 입니다. 따라서 Python 모듈을 설치할 위치를 제어하지 못할 수 있습니다. sudo python setup.py install모듈을 설치하기 위해 실행 한 다음 (root의에서 python을 찾습니다 PATH) import모듈 을 시도하면 python -c "import it"(이번에는에서에서 python을 찾습니다 PATH) 뭔가 잘못 될 수 있습니다. 이것은 내 추측이며 검증하지 않았습니다. 하지만 제 경우에는 뭔가 잘못되었습니다.

이것을 피하는 방법?

원칙은 서로 다른 방법과 도구가 서로 다른 위치에 물건을 독립적으로 설치한다는 사실을 인식하는 것이므로 신중하게 사용하십시오 .

  • 의도하지 않는 한 다른 방법으로 동일한 것을 두 번 설치하지 마십시오. (파이썬을 위해 할 생각이라면 체크 아웃하는 것이 좋습니다 virtualenv)
  • 경로 순서를 주시하고 PATH올바른지 고려하십시오.
  • 모듈을 설치할 때 실행중인 Python (또는 pip)과 모듈이 설치된 위치를 확인하십시오.

그래서, 내 사건을 어떻게 해결 했습니까?

이미 엉망이되어 치료하기가 매우 어려운 것처럼 보였기 때문에 마침내 전체 OS 재설치 로이 문제를 해결 하고DOs 및 DONT 를 따르기 시작했습니다 . 파이썬 (numpy / scipy / matplotlib,이 질문을하는 데 문제가 있음)을 사용하여 과학 환경을 설치하는 경우이 튜토리얼 이 매우 유용 하다는 것을 알았습니다 . 그래서 마침내 문제가 해결되었습니다.


혼란 스러웠던 점과 해결 방법이 있습니다.

$ which python
/usr/bin/python 

$ which python3
/usr/local/bin/python3

$ ls /usr/local/bin/python
ls: /usr/local/bin/python: No such file or directory

따라서 python2.7의 HomeBrew 설치는 없지만 python3 설치는 가지고 있습니다. / usr / bin / python 아래의 버전은 시스템 기본값을 사용합니다. 모듈 검색 경로를 기반으로 알 수 있습니다.

$ /usr/bin/python
Python 2.7.10 (default, Feb  7 2017, 00:08:15) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
`enter code here`Type "help", "copyright", "credits" or "license" for 
more information.
>>> import sys
>>> sys.path
['', '/Library/Python/2.7/...

Notice the '/Library/Python'... that's Mac OS's version of python. But I want to stay strictly on a user installed version (i.e. HomeBrew).

So here's what I did to fix this:

$ brew install python
...
Warning: python 2.7.13 is already installed, it's just not linked.
You can use `brew link python` to link this version.

$ brew link --overwrite python

$ which python
/usr/local/bin/python

$ python
Python 2.7.10 (default, Feb  7 2017, 00:08:15) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/Cellar/python/2.7.13...

Its no longer /Library/.. but /usr/local.

Now its finding all of my pip installed modules! Problem solved!


UPDATE:

After updating brew to version 1.5.4, it seems the symbolic links were removed. And now you have to add this to your path:

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

Read the Caveats section in 'brew info python':

==> Caveats
This formula installs a python2 executable to /usr/local/bin.
If you wish to have this formula's python executable in your PATH then add
the following to ~/.bash_profile:
  export PATH="/usr/local/opt/python/libexec/bin:$PATH"

Pip and setuptools have been installed. To update them
  pip2 install --upgrade pip setuptools

You can install Python packages with
  pip2 install <package>

They will install into the site-package directory
  /usr/local/lib/python2.7/site-packages

See: https://docs.brew.sh/Homebrew-and-Python.html

In order to install a python distributions into specific folder, you can use the --prefix scheme during python installation. Using the prefix scheme, you can for example install Python 2.7 into the folder /opt/py27. Now, in order to use the new installed Python distribution you have to: cleanup you PATH and LD_LIBRARY_PATH:

  • Remove all 'old' Python paths and
  • configure (according to my example) the environment variables like this:
    • PATH: Add /opt/py27/bin
    • LD_LIBRARY_PATH: Add /opt/py27/lib

That's it.

(In case you need multiple environments of Python installed at the same time, I'd suggest to have a look at virtualenv)


Here's another great solution to managing different python versions:

https://github.com/pyenv/pyenv

(I already provided an answer here, but decided to post this as an additional or alternative answer)

ReferenceURL : https://stackoverflow.com/questions/14117945/too-many-different-python-versions-on-my-system-and-causing-problems

반응형