从命令行(终端)启动Pycharm


71

我想尝试PyCharm进行鼠尾草数学开发。通常我会运行eclipse来进行鼠尾草开发,但是现在我想与PyCharm一起尝试。

要使用sage环境变量启动eclipse,通常在命令行中执行以下操作:

sage -sh
cd /path/to/eclipse
./eclipse

第一行加载鼠尾草环境变量,其余行启动eclipse。如何为pyCharm做同样的事情?(请注意,我正在使用Mac和Ubuntu进行sage开发;以上命令对两个操作系统均不可知)

  1. 链接1接近我要寻找的解决方案,但是在任何地方都找不到pyCharm.sh。
  2. 链接2:Jetbrains也没有给出明确的说明。

2
在MacOS中,您可以通过键入“ charm”来启动PyCharm,这与Yonathan Simson针对Ubuntu提到的行为相同。
cndv '16

2
JeBrains甚至在两年后都没有提供有关如何执行此操作的说明。这意味着,JB并没有很好地证明使用PyCharm运行仅sudo的脚本(如鼠标钩)。我一点都不印象深刻。
code4life

1
有人知道如何在2019年的Windows上执行此操作吗?
Jesse Reza Khorasanee

Answers:


199

编辑(2020年4月):现在似乎可以在工具箱应用程序设置中管理启动程序脚本的创建。有关更多详细信息,请参见工具箱应用公告

-

  1. 开放式应用程序Pycharm
  2. 在菜单栏中查找工具
  3. 请点击 Create Command-line Launcher
  4. 检查已在其中创建的启动器可执行文件 /usr/local/bin/charm
  5. 打开项目或文件只需键入 $ charm YOUR_FOLDER_OR_FILE

也许这就是您所需要的。


这很棒,因为您还可以打开文件或目录。
JnBrymn

8
事实证明,默认情况下,在ubuntu上您已经有此文件/usr/local/bin/charm。尽管没有您的提示,我还是很难找到它。谢谢!
Yonatan Simson's

2
注意,OSX还在charm安装时创建了二进制文件。太棒了!
AdelaN

2
这已在2019.1 EAP中消失了。

1
@episodeyang你是对的,请参阅blog.jetbrains.com/blog/2018/08/23/toolbox-app-1-11-whats-new。我将相应地更改答案。
botenvouwer

17

没错,JetBrains帮助页面不是很清楚。在OS X上,您需要在以下位置使用启动器:

/Applications/PyCharm.app/Contents/MacOS/pycharm

或者,对于社区版:

/Applications/PyCharm\ CE.app/Contents/MacOS/pycharm

不幸的是,向此二进制文件添加符号链接对我不起作用(启动器将崩溃)。但是,设置别名是可行的。将其添加到您的.bash_profile(或您使用的任何shell)中:

alias pycharm="/Applications/PyCharm CE.app/Contents/MacOS/pycharm"

然后,您可以使用simple运行命令pycharm

有了这个,你可以做一些事情,比如打开一个项目:

pycharm ~/repos/my-project

或在项目中打开文件的特定行:

pycharm ~/repos/my-project --line 42 ~/repos/my-project/script.py

或查看两个文件的差异(它们不需要成为项目的一部分):

pycharm ~/some_file.txt ~/Downloads/some_other_file.txt

请注意,我需要将绝对路径传递给那些文件,否则PyCharm无法找到它们。


1
看起来您也可以使用以下目录将目录作为项目打开:/ Applications / PyCharm \ CE.app/Contents/MacOS/pycharm / path / to / folder
Henry

17

在IDE内部,您可以单击:

工具/创建命令行启动器...

创建命令行启动器


4
正如@Ami Mahloof的回答所指出的那样,可能有必要在PyCharm更新后重新创建此启动器(对我而言,PyCharm会启动但未打开给定路径)
Florentin Le Moal

9

我通常使用OS X中的内置应用程序启动器(打开)作为别名:

alias pc='open -a /Applications/PyCharm\ CE.app'

然后我可以输入:

pc myfile1.txt myfiles*.py

尽管您不能(轻松地)将args传递给PyCharm,但是如果您想要一种快速的方法来打开文件(不需要使用文件的完整路径名),那么就可以成功了。


8

更新资料

这是现在可以从JetBrains的工具箱发射器自动创建命令行。这是您的操作方式:

  1. 打开工具箱窗口;
  2. 转到右上角的齿轮图标(工具箱本身的设置窗口);
  3. 开启Generate shell scripts;
  4. Shell script location文本框中填入您希望启动器驻留的位置。您必须手动执行此操作,此时它不会自动填充!

在Mac上,位置可能是/usr/local/bin。对于新手,您可以使用PATH变量内的任何路径,也可以在bash配置文件中向PATH变量添加新路径。用echo $PATH看哪个路径存在。

注意!它对我来说不是立即可用,在脚本生成之前,我不得不花一点时间。您可以转到IDEA的变速箱(例如,PyCharm)并查看/更改启动器名称。因此,对于PyCharm,默认名称为pycharm但您可以将其更改为自己喜欢的名称。

原始答案

如果您不使用工具箱,则仍然可以使用我的原始答案。

~~由于某种原因,该Create Command Line Launcher功能于2019.1.1不再可用。~~因为它现在是JetBrains Toolbox的一部分

这是您自己创建脚本的方法:

如果在使用前已经使用过charm命令type -a charm来查找脚本。在文件路径中更改pycharm版本。请注意,第一个变量中的编号RUN_PATH是不同的。您必须自己在目录中查找。

RUN_PATH = u'/Users/boatfolder/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/191.6183.50/PyCharm.app'
CONFIG_PATH = u'/Users/boatfolder/Library/Preferences/PyCharm2019.1'
SYSTEM_PATH = u'/Users/boatfolder/Library/Caches/PyCharm2019.1'

如果以前没有使用过charm命令,则必须创建它。

在以下位置创建超级魅力文件: /usr/local/bin/charm

然后添加以下代码(如上所述,将版本号更改为您的版本):

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import socket
import struct
import sys
import os
import time

# see com.intellij.idea.SocketLock for the server side of this interface

RUN_PATH = u'/Users/boatfolder/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/191.6183.50/PyCharm.app'
CONFIG_PATH = u'/Users/boatfolder/Library/Preferences/PyCharm2019.1'
SYSTEM_PATH = u'/Users/boatfolder/Library/Caches/PyCharm2019.1'


def print_usage(cmd):
    print(('Usage:\n' +
           '  {0} -h | -? | --help\n' +
           '  {0} [project_dir]\n' +
           '  {0} [-l|--line line] [project_dir|--temp-project] file[:line]\n' +
           '  {0} diff <left> <right>\n' +
           '  {0} merge <local> <remote> [base] <merged>').format(cmd))


def process_args(argv):
    args = []

    skip_next = False
    for i, arg in enumerate(argv[1:]):
        if arg == '-h' or arg == '-?' or arg == '--help':
            print_usage(argv[0])
            exit(0)
        elif i == 0 and (arg == 'diff' or arg == 'merge' or arg == '--temp-project'):
            args.append(arg)
        elif arg == '-l' or arg == '--line':
            args.append(arg)
            skip_next = True
        elif skip_next:
            args.append(arg)
            skip_next = False
        else:
            path = arg
            if ':' in arg:
                file_path, line_number = arg.rsplit(':', 1)
                if line_number.isdigit():
                    args.append('-l')
                    args.append(line_number)
                    path = file_path
            args.append(os.path.abspath(path))

    return args


def try_activate_instance(args):
    port_path = os.path.join(CONFIG_PATH, 'port')
    token_path = os.path.join(SYSTEM_PATH, 'token')
    if not (os.path.exists(port_path) and os.path.exists(token_path)):
        return False

    try:
        with open(port_path) as pf:
            port = int(pf.read())
        with open(token_path) as tf:
            token = tf.read()
    except (ValueError):
        return False

    s = socket.socket()
    s.settimeout(0.3)
    try:
        s.connect(('127.0.0.1', port))
    except (socket.error, IOError):
        return False

    found = False
    while True:
        try:
            path_len = struct.unpack('>h', s.recv(2))[0]
            path = s.recv(path_len).decode('utf-8')
            if os.path.abspath(path) == os.path.abspath(CONFIG_PATH):
                found = True
                break
        except (socket.error, IOError):
            return False

    if found:
        cmd = 'activate ' + token + '\0' + os.getcwd() + '\0' + '\0'.join(args)
        if sys.version_info.major >= 3: cmd = cmd.encode('utf-8')
        encoded = struct.pack('>h', len(cmd)) + cmd
        s.send(encoded)
        time.sleep(0.5)  # don't close the socket immediately
        return True

    return False


def start_new_instance(args):
    if sys.platform == 'darwin':
        if len(args) > 0:
            args.insert(0, '--args')
        os.execvp('/usr/bin/open', ['-a', RUN_PATH] + args)
    else:
        bin_file = os.path.split(RUN_PATH)[1]
        os.execv(RUN_PATH, [bin_file] + args)


ide_args = process_args(sys.argv)
if not try_activate_instance(ide_args):
    start_new_instance(ide_args)

6

使用工具->创建命令行启动器,它将安装一个python脚本,您可以使用charm启动当前工作文件夹。

很重要!

每次升级pyCharm时,都必须重新创建该命令行工具,因为它只是一个指向pyCharm配置的python脚本,该脚本可能已过时,并在尝试运行时导致失败 charm .


确实,每次更新PyCharm时,我都必须重新创建启动器才能使其再次运行。
tsando

我喜欢使用命令行启动器,但是我想这是让Toolbox替您完成的好处!
德鲁



2

在Mac OSX上

更新2019/05现在可以在JetBrains Toolbox应用程序中完成此操作。您可以使用Toolbox为所有JetBrain IDE设置一次。


2019.1 EAP开始,该Create Commmand Line Launcher选项在工具菜单中不再可用。我的解决方案是在我的bash / zsh配置文件中使用以下别名:

确保运行chmod -x ...../pycharm以使二进制文件可执行。

# in your ~/.profile or other rc file to the effect.

alias pycharm="open -a '$(ls -r /Users/geyang/Library/Application\ Support/JetBrains/Toolbox/apps/PyCharm-P/**/PyCharm*.app/Contents/MacOS/pycharm)'"

2019.1的发行版本Create Command Line Launcher再次具有菜单项。
rholmes

1

无需路径即可轻松解决:

open -b com.jetbrains.pycharm



您可以将其设置为别名,以方便每天使用(放入您的.bash_rc等等):

alias pycharm='open -b com.jetbrains.pycharm'

用法:

pycharm .
pycharm file.py

1

在Mac上使用zsh的用户的步骤:

  1. emacs〜/ .zshrc&
  2. 将其放入zshrc->别名pycharm =“ / Applications / PyCharm \ CE.app/Contents/MacOS/pycharm”
  3. 源〜/ .zshrc
  4. 在命令窗口中键入pycharm启动

0

安装的包含的实用程序/usr/local/bin/charm在OS X上对我不起作用,因此我改用了该实用程序。它实际上有效!

#!/usr/bin/env bash

if [ -z "$1" ]
then
  echo ""
  echo "Usage: charm <filename>"
  exit
fi
FILENAME=$1

function myreadlink() {
  (
  cd $(dirname $1)         # or  cd ${1%/*}
  echo $PWD/$(basename $1) # or  echo $PWD/${1##*/}
  )
}

FULL_FILE=`myreadlink $FILENAME`;

/Applications/PyCharm\ CE.app/Contents/MacOS/pycharm $FULL_FILE

0

更新:自PyCharm 2018.X起,我的答案不再有效

在MacOS上,我的bashrc中具有以下别名:

alias pycharm="open -a /Applications/PyCharm*.app"

我可以这样使用它: pycharm <project dir or file>

以这种方式启动PyCharm的好处是您可以使用pycharm .(在PyCharm中打开当前目录,/Applications/PyCharm*.app/Contents/MacOS/pycharm .而不是在打开PyCharm应用程序目录时)


更新:我切换到JetBrains Toolbox来安装PyCharm。寻找PyCharm变得有些复杂,但到目前为止,我很幸运看到这个怪物:

alias pycharm="open -a \"\$(ls -r  /Applications/apps/PyCharm*/*/*/PyCharm*.app | head -n 1 | sed 's/:$//')\""

0

在kubuntu上安装后,我发现我的pycharm脚本~/bin/pycharm只是一个桌面条目:

[Desktop Entry]                                                                                                                                                                                                 
Version=1.0
Type=Application
Name=PyCharm Community Edition
Icon=/snap/pycharm-community/79/bin/pycharm.png
Exec=env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/pycharm-community_pycharm-community.desktop /snap/bin/pycharm-community %f
Comment=Python IDE for Professional Developers
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-pycharm-ce

显然,我无法使用此命令从命令行打开任何内容:

$ pycharm setup.py
/home/eldond/bin/pycharm_old: line 1: [Desktop: command not found
/home/eldond/bin/pycharm_old: line 4: Community: command not found

但是桌面条目文件中有一个提示。往里看/snap/pycharm-community/,我发现/snap/pycharm-community/current/bin/pycharm.sh。我删除了~/bin/pycharm(实际上将其重命名为具有备份),然后执行了

ln -s /snap/pycharm-community/current/bin/pycharm.sh pycharm

在这里,我通过检查必须开始的桌面输入脚本找到了路径的起点。

现在,我可以从命令行使用pycharm打开文件。我不知道这次安装过程中发生了什么。最近两次我完成了全新的安装,这没有任何问题。


0

一些有用的信息:

在Linux上,将PyCharm作为快照程序包安装会自动创建名为pycharm-professional,pycharm-community或pycharm-educational的命令行启动器。工具| 因此,“创建命令行启动器”命令不可用。


0

open /Applications/PyCharm\ CE.app/ 打开主要的Pycharm对话框以选择项目。

与我一起为macOS 10.13.6&工作Pycharm 2018.1


0

pycharm下载并在UBUNTU中打开

下载:

  • 在此处下载pycharm linux版本:https ://www.jetbrains.com/pycharm/download/#section=linux

  • 使用以下命令解压缩下载的tar文件:tar -xvf pycharm-Example-tar.gz

打开:

  1. 导航到提取的文件夹中的bin目录。

  2. 运行:./ pycharm.sh


-1

这对我的2017 imac macOS Mojave(版本10.14.3)有效。

  1. 打开〜/ .bash_profile: nano ~/.bash_profile

  2. 附加别名: alias pycharm="open /Applications/PyCharm\ CE.app"

  3. 更新终端: source ~/.bash_profile

  4. 断言它有效: pycharm


-2

您可以Pycharm使用open命令从Mac终端启动。只需输入open /path/to/App

Applications$ ls -lrt PyCharm\ CE.app/
total 8
drwxr-xr-x@ 71 amit  admin  2414 Sep 24 11:08 lib
drwxr-xr-x@  4 amit  admin   136 Sep 24 11:08 help
drwxr-xr-x@ 12 amit  admin   408 Sep 24 11:08 plugins
drwxr-xr-x@ 29 amit  admin   986 Sep 24 11:08 license
drwxr-xr-x@  4 amit  admin   136 Sep 24 11:08 skeletons
-rw-r--r--@  1 amit  admin    10 Sep 24 11:08 build.txt
drwxr-xr-x@  6 amit  admin   204 Sep 24 11:12 Contents
drwxr-xr-x@ 14 amit  admin   476 Sep 24 11:12 bin
drwxr-xr-x@ 31 amit  admin  1054 Sep 25 21:43 helpers
/Applications$
/Applications$ open PyCharm\ CE.app/

工作完全正常的MACOS 10.13.6
Sathish所在
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.