V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
LemonFirst
V2EX  ›  Python

如何在 windows 下编写 bat 脚本,使我能够直接双击打开它就激活 venv 环境并执行 Python 脚本。

  •  
  •   LemonFirst · 2018-05-23 20:43:11 +08:00 · 5140 次点击
    这是一个创建于 2395 天前的主题,其中的信息可能已经有所发展或是发生改变。
    windows 的 bat 脚本一窍不通。
    20 条回复    2018-05-24 16:00:07 +08:00
    cdwyd
        1
    cdwyd  
       2018-05-23 20:50:09 +08:00 via Android
    打包成单文件 exe
    gjquoiai
        2
    gjquoiai  
       2018-05-23 20:53:33 +08:00
    我写的辣鸡 powershell:
    if (Test-Path ".\venv\Scripts\activate") {
    .\venv\Scripts\activate.ps1
    }
    _(:з)∠)_
    1024MB
        3
    1024MB  
       2018-05-23 20:56:25 +08:00 via Android
    这算伸手贴吗?麻烦楼下告知
    wenzhoou
        4
    wenzhoou  
       2018-05-23 21:44:41 +08:00 via Android
    不晓得。标题太长不看
    LemonFirst
        5
    LemonFirst  
    OP
       2018-05-23 21:53:00 +08:00
    @1024MB 实在是连搜索都不知道怎么搜索
    LemonFirst
        6
    LemonFirst  
    OP
       2018-05-23 21:58:49 +08:00
    @gjquoiai 直接这样就可以吗? 我本来想测试一下写了
    ...\venv\Scripts\activate.bat
    pip list
    pause
    然后直接双击
    结果 pause 都没有成功窗口就关掉了。
    虽然知道可以再 cmd 里面执行,不过没有这样操作就放弃了
    LemonFirst
        7
    LemonFirst  
    OP
       2018-05-23 22:00:40 +08:00
    @cdwyd 没想到这个方案,来试一下。
    UnknownR
        8
    UnknownR  
       2018-05-23 22:04:02 +08:00
    可以写 powershell 脚本.ps1 ,能导入模块,基于.net ,接口丰富
    shijingshijing
        9
    shijingshijing  
       2018-05-23 22:05:05 +08:00 via iPhone
    把 python 脚本拖到 开始菜单->程序->启动

    试试看

    不行的话,打开记事本,python c:\user\xxxxxx (你放 python 脚本的路径)xxxxx\myPyScript.py ,另存为 xxx.bat ,然后拖到启动里面去。
    LemonFirst
        10
    LemonFirst  
    OP
       2018-05-23 22:12:26 +08:00
    @shijingshijing 这是什么操作?这不是开机启动吗?看来我的描述很有问题啊没把问题说清楚。
    LemonFirst
        11
    LemonFirst  
    OP
       2018-05-23 22:14:09 +08:00
    @UnknownR 谢谢,看看能不能找到相关的信息测试一下,至少在 powershell 下执行 activite 不会直接给我开一个新窗口,可能比较容易点。
    LemonFirst
        12
    LemonFirst  
    OP
       2018-05-23 22:23:31 +08:00
    用 powershell 一下子就搞定了。。。可以了溜了溜了。
    arthasgxy
        13
    arthasgxy  
       2018-05-23 23:28:38 +08:00
    是要,给那种对编程一窍不通的同事,一个一键运行 python 的方案么?
    bear330
        14
    bear330  
       2018-05-23 23:43:25 +08:00   ❤️ 1
    @ LemonFirst

    問題出在你的第一行
    ...\venv\Scripts\activate.bat
    這是另一個 bat 檔, 所以要加上 call
    call ...\venv\Scripts\activate.bat
    這樣應該就解決了
    alvin666
        15
    alvin666  
       2018-05-24 00:03:46 +08:00 via Android
    我直接就是 pythonw /aaa.py ,双击运行,还可以加 input,也写过用 vbs 调用,好处是没有任何图形界面,不像 cmd 还要闪一下
    geelaw
        16
    geelaw  
       2018-05-24 00:09:13 +08:00 via iPhone
    我一般是写一个 PowerShell 脚本,然后写一个 batch 启动 PowerShell 脚本(这样可以保持 AllSigned 的执行策略)
    geelaw
        17
    geelaw  
       2018-05-24 00:17:26 +08:00
    @LemonFirst #6 你需要 CALL 内部命令,比如

    CALL path/to/another/batch.bat

    否则控制权永远不会返回当前 batch
    LemonFirst
        18
    LemonFirst  
    OP
       2018-05-24 15:52:45 +08:00 via iPhone
    @arthasgxy # 13 不是。自己想偷懒而已。。。
    LemonFirst
        19
    LemonFirst  
    OP
       2018-05-24 15:59:12 +08:00 via iPhone
    @bear330 #14 虽然用 powershell 解决了,但是还是感谢解答。 这样可以以此去了解 bat 的流程,增长见识,不然本来都不知道从何下手。感谢
    LemonFirst
        20
    LemonFirst  
    OP
       2018-05-24 16:00:07 +08:00 via iPhone
    @geelaw #17 感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   944 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:14 · PVG 03:14 · LAX 11:14 · JFK 14:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.