공유 dev 시스템에 설치 한 패키지가 있습니다. 필자는 패키지가 내 사용자 (또는 다른 사용자에게 요청하는 사용자) 만 사용할 수있게 해주는 스크립트를 원합니다. 패키지를 설치하려면, 내가 패키지 디렉토리에서 다음 명령을 사용하고 있습니다 :Python 2.3 distutils는/usr/bin/python 대신/usr/bin/python으로 shebang을 덮어 씀니다.
파이썬 setup.py 설치 --home = ~
이 수행 내가 지금까지 어떻게하고 싶은 모든 것을. 모듈을 설치하고/home/$ (whoami)/bin 디렉토리에 스크립트를 넣습니다.
하지만 내가하는 일 중 하나는 스크립트 파일에있는 새간을 대체하는 것입니다. 따라서 친절한 #!/usr/bin/env python
대신에 #!/usr/bin/python
으로 바꿉니다. 이제 내 패키지가 현재 사용자 용으로 설치되기 때문에 가져 오기를 위해 패키지 내 모듈을 볼 수 없습니다.
내 스크립트는 패키지 내의 모듈에서 함수를 가져 오므로 명령 줄에서 실행하면 가져 오기 오류가 발생합니다.
대화 형 Python 인터프리터를 실행하면 원하는 스크립트에서 가져온 행과 정확히 동일한 텍스트를 사용하여 파일을 가져올 수 있습니다.
누구든지이 문제를 해결할 수있는 방법을 알고 있습니까?
P. 아니요,이 설정에서 파이썬 버전을 제어 할 권한이 없습니다. 가까운 미래에 2.3.4입니다.
우수. 나는 그것을 살펴볼 것이지만, 그런 종류의 사후 처리를 스크립트 파일에만 적용하는 방법을 알고 있습니까? – dusktreader
"스크립트 파일 만"이라고 생각하는 것에 따라 대답을 업데이트했습니다. 필자는 호스트 시스템에서 sed를 사용합니다. 왜냐하면 내 마음 속에서 (파이썬의 fileinput 모듈을 사용하거나 행 목록을 덤프하고, 하나를 변경 한 다음 전체 파일을 다시 쓰는 등) 내 작업을 수행하는 가장 간단한 방법이기 때문입니다. 사실, 그 sed 이후, 그것만이 나쁜 hashbang의 정확한 일치를 변경하므로 모든 설치된 파일을 통과하는 것이 안전 할 것입니다. – zxq9
- 실행 옵션이 제대로 작동하지 않습니다. 그것은 2.3에서 사용할 수 없었습니다 ... 나는 그것이 작동하지 않는다는 것을 발견 할 때까지 파이썬 문서에서 그것을보고 흥분했습니다. shebang 줄은 파일의 첫 줄에만 나타날 수 있기 때문에이 상황에서 sed를 사용하는 것은 완전히 과잉입니다. 또한이 방법은 이미 패키지에 들어있는 스크립트에 대한 내용만을 수정하는 것으로 보입니다. 스크립트가 설치된 곳이 아닙니다. 그래도 도움을 주셔서 감사합니다. – dusktreader