V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · May 23, 2018 · 5843 views
    This topic created in 2899 days ago, the information mentioned may be changed or developed.
    windows 的 bat 脚本一窍不通。
    20 replies    2018-05-24 16:00:07 +08:00
    cdwyd
        1
    cdwyd  
       May 23, 2018 via Android
    打包成单文件 exe
    gjquoiai
        2
    gjquoiai  
       May 23, 2018
    我写的辣鸡 powershell:
    if (Test-Path ".\venv\Scripts\activate") {
    .\venv\Scripts\activate.ps1
    }
    _(:з)∠)_
    kY8mbXW833Lu28xn
        3
    kY8mbXW833Lu28xn  
       May 23, 2018 via Android
    这算伸手贴吗?麻烦楼下告知
    wenzhoou
        4
    wenzhoou  
       May 23, 2018 via Android
    不晓得。标题太长不看
    LemonFirst
        5
    LemonFirst  
    OP
       May 23, 2018
    @1024MB 实在是连搜索都不知道怎么搜索
    LemonFirst
        6
    LemonFirst  
    OP
       May 23, 2018
    @gjquoiai 直接这样就可以吗? 我本来想测试一下写了
    ...\venv\Scripts\activate.bat
    pip list
    pause
    然后直接双击
    结果 pause 都没有成功窗口就关掉了。
    虽然知道可以再 cmd 里面执行,不过没有这样操作就放弃了
    LemonFirst
        7
    LemonFirst  
    OP
       May 23, 2018
    @cdwyd 没想到这个方案,来试一下。
    UnknownR
        8
    UnknownR  
       May 23, 2018
    可以写 powershell 脚本.ps1 ,能导入模块,基于.net ,接口丰富
    shijingshijing
        9
    shijingshijing  
       May 23, 2018 via iPhone
    把 python 脚本拖到 开始菜单->程序->启动

    试试看

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

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

    CALL path/to/another/batch.bat

    否则控制权永远不会返回当前 batch
    LemonFirst
        18
    LemonFirst  
    OP
       May 24, 2018 via iPhone
    @arthasgxy # 13 不是。自己想偷懒而已。。。
    LemonFirst
        19
    LemonFirst  
    OP
       May 24, 2018 via iPhone
    @bear330 #14 虽然用 powershell 解决了,但是还是感谢解答。 这样可以以此去了解 bat 的流程,增长见识,不然本来都不知道从何下手。感谢
    LemonFirst
        20
    LemonFirst  
    OP
       May 24, 2018 via iPhone
    @geelaw #17 感谢。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2503 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 09:35 · PVG 17:35 · LAX 02:35 · JFK 05:35
    ♥ Do have faith in what you're doing.