Does working directory change inside of a function?












0














I am using Julia 1.0.1 with the Juno IDE.



I wrote a module MyModule,



 myModule

using Gadfly, DataFrames, Cairo, Fontconfig

function foo(N::Int64)

grid = 1:N
df = DataFrame(x = grid, y = grid .^2)

p = plot(x = "x", y = "y");
draw(PNG("figures/plot.png", 6inch, 3inch), p)

end

end


Let's call the parent directory "Top". I have a file named main.jl located in Top/Julia. I also have some auxiliary functions located in Top/Julia/functions. The script main.jl consists of the following commands:



 using MyModule

include("functions/auxiliaryFunction.jl")

N = 10

foo(10)


When I run this code,




  1. The include("functions/auxiliaryFunction.jl") command works perfectly.


  2. The file plot.png is created inside the directory Top/figures instead of inside of Top/Julia/figures



If I run pwd() in the REPL, it returns ".../Top". So what appears to be happening is that the working directory in the main script is the location of the file itself (or, of the "project" in Juno...kind of confused about that), whereas the working directory of the functions it calls in the modules it imports is the working directory of the REPL. Is this correct or am I missing something? What is the standard solution to this problem - add the working directory as an argument to the function?



Edit 1: If I add



 a = pwd()
println("$a")


to the script main.jl, it returns



 .../Top


Edit 2: When main.jl is open in Atom, the top bar displays "main.jl --- ~/Top"










share|improve this question





























    0














    I am using Julia 1.0.1 with the Juno IDE.



    I wrote a module MyModule,



     myModule

    using Gadfly, DataFrames, Cairo, Fontconfig

    function foo(N::Int64)

    grid = 1:N
    df = DataFrame(x = grid, y = grid .^2)

    p = plot(x = "x", y = "y");
    draw(PNG("figures/plot.png", 6inch, 3inch), p)

    end

    end


    Let's call the parent directory "Top". I have a file named main.jl located in Top/Julia. I also have some auxiliary functions located in Top/Julia/functions. The script main.jl consists of the following commands:



     using MyModule

    include("functions/auxiliaryFunction.jl")

    N = 10

    foo(10)


    When I run this code,




    1. The include("functions/auxiliaryFunction.jl") command works perfectly.


    2. The file plot.png is created inside the directory Top/figures instead of inside of Top/Julia/figures



    If I run pwd() in the REPL, it returns ".../Top". So what appears to be happening is that the working directory in the main script is the location of the file itself (or, of the "project" in Juno...kind of confused about that), whereas the working directory of the functions it calls in the modules it imports is the working directory of the REPL. Is this correct or am I missing something? What is the standard solution to this problem - add the working directory as an argument to the function?



    Edit 1: If I add



     a = pwd()
    println("$a")


    to the script main.jl, it returns



     .../Top


    Edit 2: When main.jl is open in Atom, the top bar displays "main.jl --- ~/Top"










    share|improve this question



























      0












      0








      0







      I am using Julia 1.0.1 with the Juno IDE.



      I wrote a module MyModule,



       myModule

      using Gadfly, DataFrames, Cairo, Fontconfig

      function foo(N::Int64)

      grid = 1:N
      df = DataFrame(x = grid, y = grid .^2)

      p = plot(x = "x", y = "y");
      draw(PNG("figures/plot.png", 6inch, 3inch), p)

      end

      end


      Let's call the parent directory "Top". I have a file named main.jl located in Top/Julia. I also have some auxiliary functions located in Top/Julia/functions. The script main.jl consists of the following commands:



       using MyModule

      include("functions/auxiliaryFunction.jl")

      N = 10

      foo(10)


      When I run this code,




      1. The include("functions/auxiliaryFunction.jl") command works perfectly.


      2. The file plot.png is created inside the directory Top/figures instead of inside of Top/Julia/figures



      If I run pwd() in the REPL, it returns ".../Top". So what appears to be happening is that the working directory in the main script is the location of the file itself (or, of the "project" in Juno...kind of confused about that), whereas the working directory of the functions it calls in the modules it imports is the working directory of the REPL. Is this correct or am I missing something? What is the standard solution to this problem - add the working directory as an argument to the function?



      Edit 1: If I add



       a = pwd()
      println("$a")


      to the script main.jl, it returns



       .../Top


      Edit 2: When main.jl is open in Atom, the top bar displays "main.jl --- ~/Top"










      share|improve this question















      I am using Julia 1.0.1 with the Juno IDE.



      I wrote a module MyModule,



       myModule

      using Gadfly, DataFrames, Cairo, Fontconfig

      function foo(N::Int64)

      grid = 1:N
      df = DataFrame(x = grid, y = grid .^2)

      p = plot(x = "x", y = "y");
      draw(PNG("figures/plot.png", 6inch, 3inch), p)

      end

      end


      Let's call the parent directory "Top". I have a file named main.jl located in Top/Julia. I also have some auxiliary functions located in Top/Julia/functions. The script main.jl consists of the following commands:



       using MyModule

      include("functions/auxiliaryFunction.jl")

      N = 10

      foo(10)


      When I run this code,




      1. The include("functions/auxiliaryFunction.jl") command works perfectly.


      2. The file plot.png is created inside the directory Top/figures instead of inside of Top/Julia/figures



      If I run pwd() in the REPL, it returns ".../Top". So what appears to be happening is that the working directory in the main script is the location of the file itself (or, of the "project" in Juno...kind of confused about that), whereas the working directory of the functions it calls in the modules it imports is the working directory of the REPL. Is this correct or am I missing something? What is the standard solution to this problem - add the working directory as an argument to the function?



      Edit 1: If I add



       a = pwd()
      println("$a")


      to the script main.jl, it returns



       .../Top


      Edit 2: When main.jl is open in Atom, the top bar displays "main.jl --- ~/Top"







      julia-lang






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 21 at 20:53

























      asked Nov 20 at 22:55









      nfernand

      105118




      105118
























          1 Answer
          1






          active

          oldest

          votes


















          0














          I noticed that Atom/Juno IDE can sometimes have some weird effect on the working dir. I think this has to do with the project management. Have you tried closing Juno, and restarting it by opening main.jl in the (...)/top/Julia folder? Code seems fine to me.






          share|improve this answer





















          • Tried this, it didn't seem to work. When I open main.jl directly with Atom after closing Juno, it looks the same as before I closed it. I do believe this has to do with project management.
            – nfernand
            Nov 21 at 20:56













          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402827%2fdoes-working-directory-change-inside-of-a-function%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          I noticed that Atom/Juno IDE can sometimes have some weird effect on the working dir. I think this has to do with the project management. Have you tried closing Juno, and restarting it by opening main.jl in the (...)/top/Julia folder? Code seems fine to me.






          share|improve this answer





















          • Tried this, it didn't seem to work. When I open main.jl directly with Atom after closing Juno, it looks the same as before I closed it. I do believe this has to do with project management.
            – nfernand
            Nov 21 at 20:56


















          0














          I noticed that Atom/Juno IDE can sometimes have some weird effect on the working dir. I think this has to do with the project management. Have you tried closing Juno, and restarting it by opening main.jl in the (...)/top/Julia folder? Code seems fine to me.






          share|improve this answer





















          • Tried this, it didn't seem to work. When I open main.jl directly with Atom after closing Juno, it looks the same as before I closed it. I do believe this has to do with project management.
            – nfernand
            Nov 21 at 20:56
















          0












          0








          0






          I noticed that Atom/Juno IDE can sometimes have some weird effect on the working dir. I think this has to do with the project management. Have you tried closing Juno, and restarting it by opening main.jl in the (...)/top/Julia folder? Code seems fine to me.






          share|improve this answer












          I noticed that Atom/Juno IDE can sometimes have some weird effect on the working dir. I think this has to do with the project management. Have you tried closing Juno, and restarting it by opening main.jl in the (...)/top/Julia folder? Code seems fine to me.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 21 at 8:46









          user172056

          545




          545












          • Tried this, it didn't seem to work. When I open main.jl directly with Atom after closing Juno, it looks the same as before I closed it. I do believe this has to do with project management.
            – nfernand
            Nov 21 at 20:56




















          • Tried this, it didn't seem to work. When I open main.jl directly with Atom after closing Juno, it looks the same as before I closed it. I do believe this has to do with project management.
            – nfernand
            Nov 21 at 20:56


















          Tried this, it didn't seem to work. When I open main.jl directly with Atom after closing Juno, it looks the same as before I closed it. I do believe this has to do with project management.
          – nfernand
          Nov 21 at 20:56






          Tried this, it didn't seem to work. When I open main.jl directly with Atom after closing Juno, it looks the same as before I closed it. I do believe this has to do with project management.
          – nfernand
          Nov 21 at 20:56




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402827%2fdoes-working-directory-change-inside-of-a-function%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Wiesbaden

          Marschland

          Dieringhausen