当前位置: 首页 > 面试题库 >

从Windows命令行启动Python脚本:脚本启动,然后失败

沈乐邦
2023-03-14
问题内容

我是高级新手,请多多包涵。

我已经从另一位工程师那里继承了python脚本。为了方便起见,我希望能够从Windows
bat文件启动脚本,但最初尝试通过从Windows命令行运行进行调试

每当我从CMD启动脚本时,它似乎都可以启动,然后立即因错误而失败。

我的环境:Windows7 Pro和Windows10 Pro(发生相同的错误),Anaconda 3.7,Spyder 3.3.2

当我从Spyder 内部 运行脚本时,脚本运行正常,没有错误。

当我尝试从Windows CMD运行时:

  C:\Windows\system32>  "%programdata%\Anaconda3\python.exe"   "B:\IcCharData\B1505_Process_Data_20190214.py"

我得到这些错误:

Traceback (most recent call last):
  File "B:\IcCharData\B1505_Process_Data_20190214.py", line 21, in <module>
    import pandas as pd # Dataframe library
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\__init__.py", line 19, in <module>
    "Missing required dependencies {0}".format(missing_dependencies))
ImportError: Missing required dependencies ['numpy']

以下是脚本的第一部分,带有实际的#号行,其中似乎是由错误引起的。互联网搜索一无所获。

可能是什么问题?
再次注意,脚本可以从Spyder内部正常运行

[snipped some irrelevant comments]

20  # Load the necessary libraries
21  import pandas as pd # Dataframe library
22  import numpy as np # Numeric library
23  import glob # Files related
24  import os # Operating System related
25  import sys #Operating System related
26  import re # regular expression related
27  import sqlite3 # database
28  import datetime
29  import subprocess # for running external programs like JMP from python
30  import logging # enables logging to both screen and a file
31  import statsmodels.api as sm # Modeling library used for linear regression

33  # Logging settings
34  logfilename = "./3_OutputData/B1505_Data_Process_Log_" + datetime.datetime.now().strftime("%Y-%m-%d-%H-%M") + '.txt'
35  level = logging.INFO
36  format = '  %(message)s'
37  handlers = [logging.FileHandler(logfilename), logging.StreamHandler()]
38  logging.basicConfig(level = level, format = format, handlers = handlers)

[snipped remaining 300+ lines of code]

已于2019-02-24添加,以回应AJNeufeld的评论:

在Spyder中跑:

import sys
print(sys.path)

runfile('B:/Desktop/untitled0.py', wdir='B:/Desktop')    # TH: apparently because spyder prompted me to save the script here#
[
'C:\\Users\\th',                 # TH: line not present with Anaconda Prompt#
'C:\\ProgramData\\Anaconda3\\python37.zip', 
'C:\\ProgramData\\Anaconda3\\DLLs', 
'C:\\ProgramData\\Anaconda3\\lib', 
'C:\\ProgramData\\Anaconda3', 
'', 
'C:\\ProgramData\\Anaconda3\\lib\\site-packages', 
'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\win32', 
'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\win32\\lib', 
'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\Pythonwin', 
'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\IPython\\extensions', # TH: line not present with Anaconda Prompt#
'C:\\Users\\th\\.ipython'                       # TH: line not present with Anaconda Prompt#
]

在Anaconda提示中跑:

(base) C:\Users\th>python
Python 3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> import sys
>>> print(sys.path)

[
'', 
'C:\\ProgramData\\Anaconda3\\python37.zip', 
'C:\\ProgramData\\Anaconda3\\DLLs', 
'C:\\ProgramData\\Anaconda3\\lib', 
'C:\\ProgramData\\Anaconda3',
'C:\\ProgramData\\Anaconda3\\lib\\site-packages', 
'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\win32', 
'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\win32\\lib', 
'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\Pythonwin'
]

问题答案:

如果要使其工作,则批处理文件必须类似于以下内容:

调用C:/ProgramData/Anaconda3/Scripts/activate.bat C:/ ProgramData / Anaconda3
C:\ ProgramData \ Anaconda3 \ python.exe“ C:/Users/xxx/Documents/script.py”

希望这可以帮助…



 类似资料:
  • 本文向大家介绍在Windows启动时自动运行Python脚本?,包括了在Windows启动时自动运行Python脚本?的使用技巧和注意事项,需要的朋友参考一下 将Python脚本添加到Windows启动时,基本上表示Python脚本将在Windows启动时运行。这可以通过两步过程来完成- 步骤#1:在Windows启动文件夹中添加或添加脚本 在启动Windows后,它会执行(相当于双击)其启动文件

  • 我有一个项目无法运行。 我已经两周没碰这个项目了。我昨天做的唯一一件事就是添加一个git存储库,就是这样。 当我试图运行时,我得到了这个错误: 我已经在其他帖子上看到了关于这个错误的解决方案,但是没有一个适合我。我已经删除了目录和文件,然后运行。 然而,我仍然得到相同的错误消息。有人知道怎么了吗? 这是我的包裹。json文件:

  • Main application script - server.js (启动脚本) 以下案例为 构建器生成代码: /** * 加载 model, 创建基础 app */ var loopback = require('loopback'); var boot = require('loopback-boot'); var app = module.exports = loopback();

  • 问题内容: 我的用例是我想初始化文件中的某些函数,然后使用定义的那些函数启动ipython。有什么办法可以做 问题答案: 根据文档,这很简单: 使用以下命令启动IPython: 如果不带选项调用,它将执行顺序列出的所有文件,并将您放入解释器,同时仍然确认您可能在文件中设置的任何选项 。此行为与标准Python不同,标准Python在被称为as时只会执行一个文件,而忽略您的配置设置。 所以,只需使用

  • 4. bash启动脚本 启动脚本是bash启动时自动执行的脚本。用户可以把一些环境变量的设置和alias、umask设置放在启动脚本中,这样每次启动Shell时这些设置都自动生效。思考一下,bash在执行启动脚本时是以fork子Shell方式执行的还是以source方式执行的? 启动bash的方法不同,执行启动脚本的步骤也不相同,具体可分为以下几种情况。 4.1. 作为交互登录Shell启动,或者

  • Dockerfile在Tomcat中正常工作。tomcat启动后,我必须触发ant脚本。catalina.sh是从一个单独的run.sh文件启动的。因此,Dockerfile具有CMD[“/tmp/run.sh”] run.sh文件有以下几行: catalina.sh运行 antscript Tomcat启动,但不调用ant脚本。我也尝试了其他的可能性,比如: catalina.sh运行&antS