所以我制作了一个包,其中包含一个python文件,该文件在安装过程中进入Python36 \ Scripts。但是在WinOS上,我有3个全局python解释器。
主要是python2.7,第二个是python3.6,第三个是python3.7。
“ my_package”软件包安装在python3.6中的C:\ Python36 \ Lib \ site-packages \ my_package中,并且包含python文件settings.py
脚本``my_script.py''也安装在python3.6下的C:\ Python36 \ Scripts \ my_script.py
因此,现在您知道在哪里写我cmd my_script.py时会有问题了,它将在python2.7上运行,因为它对python2.7不友好,将引发异常。
在UNIX中,使用shebang行即可轻松解决。 如何使用python3.6解释器调用my_script.py。
在您回答之前,我确实尝试过此操作:
cmd处于管理员模式
py -3.6 my_script.py启动将导致[Errno 2]没有此类文件或目录
包装的结构:
setup.py
from setuptools import setup
with open("README.md", "r") as fh:
long_description = fh.read()
setup(name='my_package',
version='0.1.4',
description='Work in progress',
long_description=long_description,
long_description_content_type="text/markdown",
author=',
author_email='',
packages=['my_package'],
zip_safe=False,
install_requires=['SQLAlchemy', 'pandas'],
scripts=['scripts/my_script.py']
)
my_script.py
from distutils.sysconfig import get_python_lib
sys.stdout.write(get_python_lib())
sys.path.insert(0, get_python_lib())
from my_package.settings import *
答案 0 :(得分:1)
在调用python script.py
时,操作系统找到了文件script.py
,因此您必须提供script.py
的完整路径,即{{1 }}。
如果希望 python 查找脚本,则应调用python c:\python36\scripts\script.py
(不带python -m script
),它将启动python并在.py
中查找一个名为sys.path
的模块。您可以不带前面的script
来呼叫script.py
,但这更加复杂:
python
文件时,必须在Windows中注册正确的python解释器作为exe才能使用,并且一次只能注册一个解释器。*.py
必须在您的路径上 Windows不使用c:\python36\scripts
shebang“ protocol”,在该协议中,您将用于执行文件的命令放在文件的第一行中
答案 1 :(得分:0)
我针对此问题做出了解决方法,它将很好地工作。现在不再有一个脚本,而是拥有my_script.py和my_scriptV3.py ...,现在my_scriptV3.py具有my_script.py拥有的所有代码,而my_script.py现在是版本处理程序,可帮助用户正确设置要升级的版本仅在主python解释器为python 2的情况下使用并要求执行一次操作,并且稍后每次从cmd调用my_script.py时,它将使用以前的信息并调用my_scriptV3.py,而无需再次执行任何其他步骤。
以下代码可能会对某人有所帮助(未优化):
class Bus:
def __init__(self):
self.passengers = set()