작은 파이썬 스크립트가 있습니다
#!/usr/bin/env python3
import some_python3_module
def main():
# do stuff
if __name__ == '__main__':
main()
그리고 ROS가 변수를 2.7 버전과 관련된 일부 위치로 설정하기 때문에 Python3을 사용하여 이 스크립트를 실행할 수 없습니다. 이는 Python 3이 PYTHONPATH
해당 디렉터리에서 모듈을 찾을 수 없음을 의미합니다. dist-packages
외부 환경을 수정하지 않고도 이 동작을 재정의하고 싶습니다. 즉, 나는 희망 unset PYTHONPATH
하지만 이 스크립트 내에서만, 그리고 바람직하게는 그 안에서 shebang이 계속 작동할 수 있습니다. 가능합니까?
이것이 superuser.com에 더 적합한지 확실하지 않습니다.
답변1
귀하의 필요에 맞는 명령줄 옵션이 있습니다:
#!/usr/bin/env python3 -E
-이자형
PYTHONPATH 및 PYTHONHOME과 같이 설정될 수 있는 PYTHON* 환경 변수를 무시합니다.
답변2
이 질문이 약간 오래되었다는 것을 알고 있지만 이 문제에 대한 구체적인 해결책을 찾고 있습니다. 이것이 /usr/bin/env를 사용하는 실제 목적이라는 것이 밝혀졌습니다.
#!/usr/bin/env -u PYTHONPATH python3
이렇게 하면 원하는 효과를 얻을 수 있습니다.설정되지 않음, 그리고 python3을 실행하세요.
man 1 환경에서:
ENV(1) User Commands ENV(1)
NAME
env - run a program in a modified environment
.
.<snip>
.
-u, --unset=NAME
remove variable from the environment