{"id":325555,"date":"2023-02-21T02:02:36","date_gmt":"2023-02-21T01:02:36","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=pycharm&#038;p=325555"},"modified":"2025-09-17T16:01:35","modified_gmt":"2025-09-17T15:01:35","slug":"2023-1-eap-3","status":"publish","type":"pycharm","link":"https:\/\/blog.jetbrains.com\/zh-hans\/pycharm\/2023\/02\/2023-1-eap-3","title":{"rendered":"PyCharm 2023.1: EAP 3 Is Here!"},"content":{"rendered":"\n<p>The third EAP build brings the long-awaited ability to work with remote Jupyter notebooks, enhancements to the new UI, new Astro support, and more.<\/p>\n\n\n\n<p>You can download it from our <a href=\"https:\/\/www.jetbrains.com\/pycharm\/nextversion\/\" target=\"_blank\" rel=\"noopener\">website<\/a>, get it from the free <a href=\"https:\/\/www.jetbrains.com\/toolbox-app\/\" target=\"_blank\" rel=\"noopener\">Toolbox App<\/a>, or update to it using snaps for Ubuntu.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1200\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/01\/Blog_Featured_image_1280x600_PyCharm-2x-2.png\" alt=\"\" class=\"wp-image-314864\"\/><\/figure>\n\n\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/pycharm\/nextversion\/\" target=\"_blank\" rel=\"noopener\">Download PyCharm 2023.1 EAP<\/a><\/p>\n\n\n<p>Let\u2019s take a closer look at these and other changes in this build.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Remote editing of Jupyter notebooks<\/strong><\/h2>\n\n\n\n<p>You can now easily work with the remote Jupyter notebooks from PyCharm. To do so, open the project you want to attach a remote Jupyter notebook to in PyCharm. In the main menu, select <em>Tools | Add Jupyter Connection. <\/em>In the popup that comes up, choose <em>Connect to Jupyter server using URL <\/em>and then enter the server URL<em>.<\/em>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/remote-Jupyter.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/remote-Jupyter.png\" alt=\"\" width=\"800\" class=\"wp-image-325559\"\/><\/figure>\n\n\n\n<p>After establishing a successful connection, PyCharm will show the remote Jupyter server in the project view. Please note that the server will be bound to this specific project, meaning that if you want to work with this server for another project, you will need to repeat these steps to attach it to that particular project.<\/p>\n\n\n\n<p>The context menu offers a range of notebook-related actions you can use:&nbsp;<\/p>\n\n\n\n<ul>\n<li>Copy, paste, and rename remote Jupyter notebooks between local and remote machines.<\/li>\n\n\n\n<li>Fetch the latest remote version of the notebook from the server by selecting <em>Reload from Server<\/em>.<\/li>\n\n\n\n<li>Reconnect to a remote server by selecting <em>Reconnect<\/em>.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/remote-Jupyter-options.png\" alt=\"\" width=\"800\" class=\"wp-image-325570\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Manage the packages of the attached projects<\/strong><\/h2>\n\n\n\n<p>If you work with an additional project attached to your main project, you can now manage the packages of both projects in the Python Packages tool window.<\/p>\n\n\n\n<p>Open the tool window and choose a project to work with in the additional panel on the left. You will see the list of the available packages on the left-hand side of the tool window. You can install and uninstall the package and manage its version.<\/p>\n\n\n\n<p>If you\u2019re working with multiple files from different projects with the Python Packages tool window open, the project selected in the tool window (and the list of the installed packages) will be changed automatically depending on the current active file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/python-packages.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/python-packages.png\" alt=\"\" width=\"800\" class=\"wp-image-325582\"\/><\/figure>\n\n\n\n<p>We\u2019ve also implemented alphabetical sorting for the list of installed packages for your current project in the Python Packages tool window. Note that the sorting is case-sensitive.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Editor<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Syntax highlighting for the Quick Documentation popup<\/strong><\/h3>\n\n\n\n<p>Now it is even easier to read through the code documentation in the Quick Documentation popup. Syntax highlighting in signatures now looks very similar to the one in the editor.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/quick_doc_highlighting.png\" alt=\"\" width=\"800\" class=\"wp-image-325593\"\/><\/figure>\n\n\n\n<p>We also updated the Quick Navigation tooltip. Now it provides syntax highlighting for the definition of the selected expression, inferred type, and clickable links for definition elements. To call a tooltip, press \u2318 and hover the mouse pointer over the expression (or place the caret on it).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/quick_doc_clickable_popup.png\" alt=\"\" width=\"800\" class=\"wp-image-325604\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Code Vision improvements<\/strong><\/h3>\n\n\n\n<p>Last year, in PyCharm 2022.3, we added Code Vision \u2013 inlay hints that show the author of the last change to an element (method or class).<\/p>\n\n\n\n<p>For the upcoming 2023.1 release, we\u2019re adding <em>usages inlay hints<\/em> to Code Vision. They will help you keep track of class implementations and overriding methods. These usages hints show the number of times a symbol is used right above its declaration. You can click the hint to jump to a usage. If there are several usages, select the one you want from the list.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/usages_inlay-hints.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/usages_inlay-hints.png\" alt=\"\" width=\"800\" class=\"wp-image-325742\"\/><\/figure>\n\n\n\n<p>Usages inlay hints are enabled by default. To turn them off, hover over a hint and select <em>Hide &#8216;Code Vision: Usages&#8217; Inlay Hints or Hide All &#8216;Code Vision&#8217; Inlay Hints<\/em> from the context menu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New UI<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Vertical split for tool windows in the new UI<\/h3>\n\n\n\n<p>For the new UI, we\u2019ve introduced the option to split the tool window area so that you can conveniently arrange these windows.<\/p>\n\n\n\n<p>To add a tool window to this area and place it in the lower part, drag its icon along the sidebar and drop it under the separator. Alternatively, you can right-click on an icon to call the context menu and assign the new placement for a tool window using the&nbsp;<em>Move to<\/em>&nbsp;action.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/vertical-split-new-ui.png\" alt=\"\" width=\"800\" class=\"wp-image-326061\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><em>Compact Mode<\/em>&nbsp;for the new UI<\/h3>\n\n\n\n<p>To improve the user experience with PyCharm\u2019s new UI on smaller screens, we\u2019ve introduced&nbsp;<em>Compact Mode<\/em>&nbsp;which provides a more consolidated look and feel due to the reduced heights for toolbars and tool window headers, scaled-down spacings and paddings, and smaller icons and buttons.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/compact-mode-1.png\" alt=\"\" width=\"800\" class=\"wp-image-326072\"\/><\/figure>\n\n\n\n<p>To turn&nbsp;<em>Compact Mode&nbsp;<\/em>on, go to the&nbsp;<em>View<\/em>&nbsp;menu and select&nbsp;<em>Appearance | Compact Mode.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project tabs in the new UI on macOS<\/h3>\n\n\n\n<p>We\u2019ve resolved one of the most popular feature requests for the IDE\u2019s new UI \u2013 implementing project tabs for macOS users. When you have several projects open, you can now easily switch between them using project tabs displayed under the main toolbar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/project-tabs.png\" alt=\"\" width=\"800\" class=\"wp-image-326083\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Web development<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Astro support<\/h3>\n\n\n\n<p>Initial support for the Astro framework is now available in PyCharm via a plugin. This includes essential assistance such as syntax highlighting, code completion with automatic imports, refactorings, navigation, intentions, code folding, Emmet support, and correct formatting.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/zdKdq2RXsc4UZhpw2COw1IqIX6ifvyPeFhJFEnwM6eySDDCd5Vy4BQSJNvKYXuqbx6QlgYqhiqZkTVFqXl_N1l1saZz3MKyiAcJXVJzXKHlyNDZU9wq8_3Jpzx6aaBkUtkzu9vKmW_ipoet-RcOVAwM.gif\" alt=\"\" width=\"800\" \/><\/figure>\n\n\n\n<p>You can download the&nbsp;<a href=\"https:\/\/plugins.jetbrains.com\/plugin\/20959-astro\" target=\"_blank\" rel=\"noopener\">Astro plugin<\/a>&nbsp;from JetBrains Marketplace, or install it directly from the IDE by going to&nbsp;<em>Preferences \/ Settings | Plugins&nbsp;<\/em>and searching for \u201cAstro\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/tv0roM7awGcuD_brSz2-xIBwJoKMROHwlrmbxpO7uT2UbpEudAmEgU72qEi025ROthpwcE2WXbMCDOA_WoJnDD7oCfTq4THcl6_kDLOD0P1Ci4uYH9ZaPEYq_NRGsQDZpqpIY08j_5LNodSUjbRpHs8.png\" alt=\"\" width=\"800\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Docker&nbsp;<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Merged logs from all Docker-compose containers<\/h3>\n\n\n\n<p>The&nbsp;<em>Dashboard<\/em>&nbsp;tab of the Docker-compose node now pulls together logs from every Docker-compose container and displays them all in one place, updated in real time.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-63.png\" alt=\"\" width=\"800\" class=\"wp-image-325694\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Support for Azure Container Registry&nbsp;<\/h3>\n\n\n\n<p>You can now easily connect to Azure Container Registry.&nbsp;<\/p>\n\n\n\n<p>Go to&nbsp;<em>Settings\/Preferences | Build, Execution, Deployment | Docker | Docker Registry<\/em>&nbsp;and set it up by selecting the&nbsp;<em>Docker V2<\/em>&nbsp;option in the&nbsp;<em>Registry<\/em>&nbsp;input field.&nbsp;<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/AkF-vNzM_q7dFcqFDdvgLs6A32Yaxpecvw64K385xmZv1PC6cb8d65vKu8C3w2M5ex-76uQfbmr8H1lkjnJLenO9RjrMAPR625joIJZVAaJgDAjPwq5iNv-OtCPED3JiXvIXONeJsg2yw9f_vjsuEBo.png\" width=\"800\" >\n\n\n\n<h3 class=\"wp-block-heading\">New setting to apply the<code data-enlighter-language=\"java\" class=\"EnlighterJSRAW\">:z<\/code> mount option to bind volumes on SELinux&nbsp;<\/h3>\n\n\n\n<p>You now have the ability to add <code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">:z<\/code> configuration flags to Docker bind mounts, which allows you to connect volumes to Docker containers on SELinux workstations.&nbsp;<\/p>\n\n\n\n<p>To enable this functionality, go to <em>Settings\/Preferences | Advanced Settings | Docker.&nbsp;<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-3.png\" alt=\"\" width=\"800\" class=\"wp-image-319656\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Kubernetes&nbsp;<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">File templates in the New Kubernetes Resource popup<\/h3>\n\n\n\n<p>To make creating new Kubernetes files easier, we\u2019ve added a new action to the <em>File | New <\/em>menu<em>.&nbsp;<\/em><\/p>\n\n\n\n<p>Once you select the<em> New Kubernetes Resource<\/em> option, you\u2019ll see a popup that features a list of the most popular resource types, such as <em>Pod<\/em>, <em>Deployment<\/em>, <em>ConfigMap<\/em>, etc.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-4.png\" alt=\"\" width=\"800\" class=\"wp-image-319667\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Action to create new Kubernetes Secrets&nbsp;<\/h3>\n\n\n\n<p>PyCharm 2023.1 EAP 3 introduces a new dialog to create Kubernetes Secrets.&nbsp;<\/p>\n\n\n\n<p>To define a new Secret, you can input a key and value manually. Alternatively, you can specify a file whose content will be used for the value of the resulting Secret.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-1.jpeg\" alt=\"\" width=\"800\" class=\"wp-image-319678\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Color-coded change markers in the gutter for Kubernetes resources loaded from cluster&nbsp;<\/h3>\n\n\n\n<p>When you use the<em> View YAML<\/em> action for resources from a cluster and make any changes in the opened file, the IDE highlights all of your edits with color-coded marks in the gutter. This way, you can be sure that the changes are made to the required parts of the resource before you apply them back to the cluster.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-3.gif\" alt=\"\" width=\"800\" class=\"wp-image-319689\"\/><\/figure>\n\n\n\n<p>Additionally, using the <em>Compare with Cluster <\/em>icon, you can open a full diff view that will fetch the resource\u2019s current version from the cluster and compare it with the local version.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-5.png\" alt=\"\" width=\"800\" class=\"wp-image-319700\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Improved user experience with kubeconfig files<\/h3>\n\n\n\n<p>PyCharm 2023.1 EAP 3 has refined the user experience for working with kubeconfig files. You can now easily access a kubeconfig file in the <em>Services<\/em> view and open it in the editor.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-2.jpeg\" alt=\"\" width=\"800\" class=\"wp-image-319711\"\/><\/figure>\n\n\n\n<p>If you change a kubeconfig file outside of PyCharm, the IDE will detect this and automatically refresh its configuration in the <em>Services<\/em> tool window.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-6.png\" alt=\"\" width=\"800\" class=\"wp-image-319722\"\/><\/figure>\n\n\n\n<p>Furthermore, the IDE now supports both code highlighting and completion for kubeconfig files.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-7.png\" alt=\"\" width=\"800\" class=\"wp-image-319733\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Ability to assign custom shortcuts for actions in the <em>Service<\/em> view<\/h3>\n\n\n\n<p>You can now assign shortcuts for most Kubernetes actions in the <em>Service<\/em> view, like <em>Forward Ports<\/em>, <em>Delete Resource<\/em>, and <em>Describe Resource<\/em>, among others&nbsp;<\/p>\n\n\n\n<p>To set your custom shortcuts, go to <em>Settings\/Preferences | Keymap | Plugins | Kubernetes<\/em>.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/02\/image-4.gif\" alt=\"\" width=\"800\" class=\"wp-image-319744\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>This EAP build also includes the following fixes:<\/strong><\/h3>\n\n\n\n<ul>\n<li>PyCharm now supports tox 4.0.0 and higher.<\/li>\n\n\n\n<li>Methods that raise a NotImplementedError are no longer considered abstract by default [<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/PY-38680\/Dont-treat-classes-raising-NotImplementedError-as-abstract\" target=\"_blank\" rel=\"noopener\">PY-38680<\/a>].<\/li>\n<\/ul>\n\n\n\n<p>These are the most important updates for PyCharm 2023.1 EAP 3. For the full list of improvements, check out the<a href=\"https:\/\/youtrack.jetbrains.com\/articles\/PY-A-233538074\/PyCharm-2023.1-EAP-3-231.7515.12-build-Release-Notes\" target=\"_blank\" rel=\"noopener\"> release notes<\/a>. Share your feedback on the new features in the comments below, on <a href=\"https:\/\/twitter.com\/pycharm\" target=\"_blank\" rel=\"noopener\">Twitter<\/a>, or in our <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/PY\" target=\"_blank\" rel=\"noopener\">issue tracker<\/a>.<\/p>\n","protected":false},"author":1208,"featured_media":314864,"comment_status":"closed","ping_status":"closed","template":"","categories":[826,907],"tags":[7199,8068,2060,7057,6992,8069,3495],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/pycharm\/325555"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/pycharm"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/types\/pycharm"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/users\/1208"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=325555"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/pycharm\/325555\/revisions"}],"predecessor-version":[{"id":626519,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/pycharm\/325555\/revisions\/626519"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media\/314864"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=325555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/categories?post=325555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/tags?post=325555"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/cross-post-tag?post=325555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}